파이썬 160

[백준, 파이썬, 1380번] 귀걸이

풀이 2*n-1 줄로 주어지는 입력 값 중 첫 번째 입력값인 인덱스를 통해 cnt 배열에서 -1 하여 마지막 for문에서 cnt의 값이 1인 인덱스를 name에서 찾아 tc 와 함께 출력하여 해결 import sys input = sys.stdin.readline tc = 1 while True: n = int(input()) if not n: break name = [input().rstrip('\n') for _ in range(n)] cnt = [2 for _ in range(n)] for _ in range(2*n-1): idx, check = input().rstrip('\n').split() cnt[int(idx)-1] -= 1 for i in range(n): if cnt[i] == 1: p..

알고리즘 2024.02.13

[백준, 파이썬, 1270번] 전쟁 - 땅따먹기

풀이 테스트 케이스 이후의 주어지는 입력값 중 첫 번째 값은 땅에 있는 병사수 이후의 값은 병사의 번호로 주어지며 해당 병사의 번호를 딕셔너리 기반으로 인원을 조사할 수 있도록 했으며 결과로는 땅에 있는 인원의 절반을 mx가 초과하지 못한다는 것을 기준으로 출력하여 해결 import sys input = sys.stdin.readline for _ in range(int(input())): dic = dict() mx = 0 li = list(map(int,input().split())) for i in range(1,li[0]+1): if dic.get(li[i]): dic[li[i]] += 1 else: dic[li[i]] = 1 mx = max(dic[li[i]],mx) result = 0 if m..

알고리즘 2024.02.12

[백준, 파이썬, 1269번] 대칭 차집합

풀이 집합 요소를 사용해서 풀면 되는 간단한 문제라고 생각했으며 단순히 예시에 나온 것처럼 A-B, B-A 를 더한 값을 결과로 내기엔 시간이 더 걸릴 것 같아서 교집합을 먼저 구한 다음 각 집합의 개수에 뺀 값을 더하여 문제를 해결 import sys input = sys.stdin.readline a_ln,b_ln = map(int,input().split()) a = set(map(int,input().split())) b = set(map(int,input().split())) inter = a.intersection(b) print(a_ln+b_ln-(2*len(inter)))

알고리즘 2024.02.12

[백준, 파이썬, 1392번] 노래 악보

풀이 해당 문제를 처음 보았을 때 무슨 말이야 했는데 단순히 질문하는 시간에 몇 번째 노래가 나오고 있는지 물어보는 문제로 우선 노래 시간을 배열에 추가할 때 입력값 + 누적값 -1을 추가하여 셋팅한 다음 2중 for문으로 입력된 질문 시간에 따라 질문 시간이 특정 배열의 시간보다 작거나 같다면 출력하는 식으로 해결 import sys input = sys.stdin.readline n,q = map(int,input().split()) n_li, x = [], 0 for i in range(n): z = int(input()) n_li.append(z + x -1) x += z for _ in range(q): Q = int(input()) for i in range(n): if Q > n_li[i]:..

알고리즘 2024.01.08