baekjoon 383

[baekjoon] 백준 2161번(파이썬): 카드1

문제 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 알고리즘 - pop(), append() 함수를 잘 이용하여 문제를 수행한다. - 카드를 버리고 난 후에 카드가 없다면 반복문을 멈출 수 있게 코드를 작성한다. 코드 import sys n = int(sys.stdin.readline()) card = [i for i in range(1, n + 1)] res = [] while True: res.append(card.pop(0)) # 제일 위에 있는 카드를 바닥에 버린다. if not card: # 위에서..

CodingTest/Baekjoon 2021.10.11

[baekjoon] 백준 7785번(파이썬): 회사에 있는 사람

문제 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 알고리즘 - 반복문을 통해 출입 기록을 확인한다. - 방문자의 출퇴근 여부를 통해 방문자를 추가하거나 제거한다. - 사전 순의 역순으로 정렬하여 출력한다. 코드 import sys n = int(sys.stdin.readline()) temp = dict() # 딕셔너리 형 # 반복문을 통해 출입 기록울 확인한다. for _ in range(n): a, b = map(str, sys.stdin.readline().sp..

CodingTest/Baekjoon 2021.10.11

[baekjoon] 백준 4195번(파이썬): 친구 네트워크

문제 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net 알고리즘 - union-find 알고리즘을 통해 문제를 수행한다. - 친구의 부모 노드를 찾고 부모 노드의 탐색 횟수를 출력한다. 코드 import sys sys.setrecursionlimit(10 ** 6) # a가 속한 집합과 b가 속한 집합 합치기 def union(x, y): # 각 친구의 부모 노드를 찾는다. x = find(x) y = find(y) # 부모 노드가 같으면 리턴 if x == y: return else: # 부모 노드..

CodingTest/Baekjoon 2021.10.10

[baekjoon] 백준 11652번(파이썬): 카드

문제 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 알고리즘 - collections 모듈에 Counter 클래스를 사용하여 문제를 수행한다. - 입력받은 숫자 카드를 오름차순으로 정렬한다.(카드의 개수가 똑같을 경우 작은 정수 값을 출력하기 때문에) - 반복문을 통해 카드를 확인하면서 카드의 개수를 비교해준다. 코드 import sys from collections import Counter # collections 모듈에 Counter 클래스 사용 n = int(sys.stdin.readline())..

CodingTest/Baekjoon 2021.10.09

[baekjoon] 백준 5052번(파이썬): 전화번호 목록

문제 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 알고리즘 - 테스트 케이스만큼 반복한다. - 전화번호를 문자열로 입력받아 오름차순으로 정렬한다.(사전순으로 정렬) - 반복문을 통해 전화번호를 확인한다. - 현재 전화번호의 문자열과 다음 전화번호의 현재 전화번호 길이만큼의 문자열을 비교한다. - 같으면 일관성이 없는 것이고 다르면 일관성이 있는 것이다. 코드 import sys t = int(sys.stdin.readline()) for _ in range(t): n = int(sy..

CodingTest/Baekjoon 2021.10.08

[baekjoon] 백준 9935번(파이썬): 문자열 폭발

문제 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 알고리즘 - 반복문을 통해 문자열을 확인한다. - 스택에 문자를 하나씩 추가한다. - 스택의 마지막 요소와 폭발 문자열의 마지막 요소가 같고 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열과 폭발 문자열이 같으면 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열을 제거한다. 코드 import sys s = str(sys.stdin.readline().strip()) bomb = str(sys.stdin.readline().stri..

CodingTest/Baekjoon 2021.10.07

[baekjoon] 백준 1976번(파이썬): 여행 가자

문제 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 알고리즘 - Union-find 알고리즘을 통해 문제를 수행한다. - 현재 도시와 연결되어있는 도시를 확인하고 연결되어 있다면 두개의 도시를 합집합으로 표현한다. - set() 함수를 통해 합집합을 찾는다. 즉, 모든 도시가 연결되어있는지 확인한다. 코드 import sys sys.setrecursionlimit(10 ** 6) # a가 속한 집합과 b가 속한 집합 합치기 def union(x, y): x = find(x) y = find(y) # a와 b..

CodingTest/Baekjoon 2021.10.06

[baekjoon] 백준 1766번(파이썬): 문제집

문제 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 알고리즘 - bfs 탐색과 위상 정렬을 통해 문제를 수행한다. - 선행 문제의 개수를 반복문을 통해 확인한다. - 선행 문제 필요 없이 풀 수 있는 문제부터 힙 푸시하여 탐색한다. - 연결된 문제를 탐색하면서 선행 문제의 개수를 -1 해준다. - 선행 문제의 개수가 0인 문제를 힙 푸시하여 탐색한다. - 탐색한 문제는 결과 리스트에 추가한다. 코드 import sys import heapq # bfs 탐색 def bfs(): ..

CodingTest/Baekjoon 2021.10.05

[baekjoon] 백준 5397번(파이썬): 키로거

문제 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 알고리즘 - 테스트 케이스만큼 반복한다. - 반복문을 통해 강산이의 입력 순서를 확인한다. - 커서 기준으로 res 리스트는 왼쪽에 있는 입력, stack 리스트는 오른쪽에 있는 입력이다. - 커서 기준에 따라 입력을 수행해준다. 코드 import sys t = int(sys.stdin.readline()) # 테스트 케이스만큼 반복 for _ in range(t): l = list(map(str, sys.stdin.readline().strip()..

CodingTest/Baekjoon 2021.10.04

[baekjoon] 백준 9375번(파이썬): 패션왕 신해빈

문제 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 알고리즘 - collections 모듈에 Counter 클래스를 사용하여 문제를 수행한다. - 의상의 이름과 종류를 입력받아 종류를 리스트에 추가한다. - 의상의 종류를 추가한 리스트에 Counter 함수를 통해 개수를 확인한다. - 알몸도 옷이라고 생각하여 각 의상의 + 1 을 해준 후 각 의상의 종류를 곱해준다. - 곱하게 되면 모든 조합이 나오고 이때, 모든 ..

CodingTest/Baekjoon 2021.10.03