Algorithm
-
백준 1715 카드 정렬하기(python, heapq)Algorithm/대회 및 기타 2021. 8. 28. 03:10
* 문제 링크: https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net * 해결 방법: heapq 이용 1. 주어진 리스트에서 가장 작은 수 2개를 먼저 꺼냄 2. 꺼내서 더한 후, 다시 리스트에 넣음 3. 단, 리스트가 한 개 일 수 있는데 그 땐 0 출력 import heapq n = int(input()) card = [] for c in range(n): heapq.heappush(card, int(input())) sol = 0..
-
프로그래머스 없어진 기록 찾기 / 있었는데요 없었습니다 (SQL, JOIN)Algorithm/대회 및 기타 2021. 8. 28. 01:47
1. 없어진 기록 찾기 * 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/59042 * 해결 방법: LEFT JOIN 이용 SELECT OUTS.ANIMAL_ID, OUTS.NAME #아웃풋이 요구하는 변수 선택 #ANIMAL_OUTS에 존재하는 컬럼만 찾아야하기 때문에 LEFT OUT JOIN 사용 FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID is NULL #존재하지 않으면 NULL ORDER BY OUTS.ANIMAL_ID 2. 있었는데요 없었습니다. * 문제 링크: https://programmers.co.k..
-
프로그래머스 오픈채팅방(python, 딕셔너리의 응용)Algorithm/대회 및 기타 2021. 8. 28. 00:29
* 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr * 문제 해결 방법: 빈 딕셔너리를 만들고, Enter와 Change의 경우 id는 key, name은 value로 저장 def solution(record): answer = [] ID = {} for r in record: if len(r.split(' ')) == 3: state, user, name = r.split(' ') if stat..
-
프로그래머스 문자열 압축(python, 완전 탐색)Algorithm/대회 및 기타 2021. 8. 27. 22:26
2단계라고 하기엔 좀 하드하네.... * 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/60057?language=python3 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr * 해결 방법: 완전 탐색 1. 최대 입력 문자열이 길지 않은 것으로 보아 완전 탐색을 원하는 문제로 판단 2. 문자열을 몇 개 단위로 자를지 다 해보고 결과값이 가장 짧은 것을 출력 def solution(s): answer = len(s) for i in range(1..
-
백준 4195 친구 네트워크(python, Union-Find)Algorithm/BOJ(백준) 2021. 8. 27. 17:00
* 문제 링크: https://www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net * 해결 방법: Union-find 1. 사람 수를 100,000명까지 입력 가능하지만, 완탐으로 풀면 시간초과. 따라서, 집합을 이용하여 해결 2. 비어있는 dict 하나를 구성 3. 입력받은 name1과 name2가 dict에 존재하지 않으면, 각 name을 key값으로 잡고 0번 인덱스부터 차근차근 저장 4. 집합을 구성할 arr=[-1] * (2*n+2) #사람 ..