728x90

python 107

[백준] 24393 | 조커 찾기 [파이썬/python]

문제link: https://www.acmicpc.net/problem/24393 접근조커의 위치를 저장할 변수 joker를 생성하고, 카드를 섞을 때마다 조커의 위치를 갱신하도록 했다. 코드import sysinput = sys.stdin.readlinen = int(input())joker = 0a = [list(map(int, input().split())) for _ in range(n)]for aa in a: f = 1 cnt = 0 tmp = [0, 13] for j in range(len(aa)): #조커 위치를 찾은 경우 루프에서 빠져나간다. if f == -1: break if tmp[f] 답을 1-indexed 형..

알고리즘 2025.09.12

[백준] 3281 | T9 [파이썬/python]

문제link: https://www.acmicpc.net/problem/3281 접근입력받은 단어 목록을 대응하는 숫자 문자열로 변환해 딕셔너리에 저장해 이용했다. 같은 값이면 첫 번째 값을 출력해야 하므로 딕셔너리에 존재하지 않는 값만 새로이 저장하도록 했다. 코드import sysinput = sys.stdin.readline#단어->숫자 용이한 변환을 위한 딕셔너리#numd[알파벳] = 알파벳에 대응하는 키패드 숫자numd = dict()x = 2for i in range(65, 91): if i in (68, 71, 74, 77, 80, 84, 87): x += 1 numd[chr(i)] = str(x)#단어를 저장하는 딕셔너리#wordd[숫자] = 단어#ex) wordd..

알고리즘 2025.09.11

[백준] 15686 | 치킨 배달 [파이썬/python]

문제link: https://www.acmicpc.net/problem/15686 접근길이가 m인 치킨집 좌표 조합을 생성한 후 치킨 거리를 계산하고 최솟값이면 갱신하여 답을 도출한다.치킨 거리를 계산하는 부분에서 코드를 압축해 작성해보았는데 되레 복잡해진 것 같다.ㅠ for문을 이용해 나누는 것이 코드 가독성 면에서 나을 것 같다. 코드import sysinput = sys.stdin.readlinedef bt(start): if len(com) == m: cnt[0] = min( cnt[0], sum(min(abs(hx-chicken[i][0])+abs(hy-chicken[i][1]) for i in com) for hx, hy in house..

알고리즘 2025.09.10

[백준] 30191 | 문자열 만들기 1 [파이썬/python]

문제link: https://www.acmicpc.net/problem/30191 접근정답 문자열을 구성할 때 + 연산자를 사용했더니 시간 초과가 발생했다. 답을 리스트에 저장한 후 마지막에 합치는 식으로 변경해 제출했다. 코드n = int(input())t = input().rstrip()s = []ans = []for i in range(n-1, -1, -1): if s and s[-1] == t[i]: s.pop() ans.append('N') elif t[i] == 'U': ans.append('SN') s.append('S') elif t[i] == 'S': ans.append('UN') s.append(..

알고리즘 2025.09.08

[백준] 20772 | Scheduler [파이썬/python]

문제link: https://www.acmicpc.net/problem/20772 접근최대 힙을 사용하면 쉽게 풀 수 있는 문제이다.아래 코드에서는 파이썬의 heapq를 사용했다. 코드import heapqn, t = map(int, input().split())p = list(map(int, input().split()))cnt = [0]*nh = []for i in range(n): heapq.heappush(h, (-p[i], i))for i in range(1, t+1): s, j = heapq.heappop(h) cnt[j] += 1 heapq.heappush(h, (-p[j]+i, j))print(*cnt)

알고리즘 2025.09.08

[백준] 21777 | 리버스 가희와 프로세스 1 [파이썬/python]

문제link: https://www.acmicpc.net/problem/21777 접근같은 우선순위이면 pid가 작은 프로세스부터 실행한다는 점에 유의해 코드를 작성했다. 코드import sysinput = sys.stdin.readlinet = int(input())#d[pid] = [실행시간, 우선순위] d = dict()pids = list(map(int, input().split()))prev = Nonetmp = tfor i in range(t-1, -1, -1): x = pids[i] if prev and prev > x: tmp -= 1 if x not in d: d[x] = [1, tmp - i] else: d[x][0] += 1 ..

알고리즘 2025.09.08

[백준] 14725 | 개미굴 [파이썬/python]

문제link: https://www.acmicpc.net/problem/14725입력받은 정보를 활용해 개미굴의 구조를 출력하는 문제이다. 접근문제에서 제시하는 개미굴이 트리 구조로 되어 있으므로, 입력값에 따라 트리를 생성한 후 이를 규칙에 맞게 출력하면 된다.root 노드들은 따로 모아두었다. 이름이 같은 먹이가 서로 다른 층에 동시에 존재할 수 있으므로 구분할 수 있도록 개별 인덱스를 함께 저장하여 활용했다.같은 층의 먹이들은 오름차순으로 출력해야 하므로 출력 전 리스트를 정렬해 주었다. 코드import syssys.setrecursionlimit(10**6)input = sys.stdin.readline#만들어진 트리 탐색 후 출력def dfs(i, cnt): if len(tree[i]) =..

알고리즘 2025.09.06

[백준] 14464 | 소가 길을 건너간 이유 4 [파이썬/python]

문제link: https://www.acmicpc.net/problem/14464 접근이미 소를 도와준 닭을 제외하기 위해 pop(i)를 쓸지 visited 리스트를 만들어 처리할지 고민했는데... bisect를 사용해 보고 싶어 아래와 같이 구현했다 ㅎㅎ 코드import sysinput = sys.stdin.readlineimport bisectc, n = map(int, input().split())t = [int(input()) for _ in range(c)]ab = []for _ in range(n): a, b = map(int, input().split()) ab.append((b, a))t.sort()ab.sort()cnt = 0visited = [0]*cfor b, a in ab..

알고리즘 2025.08.31

[백준] 31151 | to Pay Respect [파이썬/python]

문제link: https://www.acmicpc.net/problem/31151 접근라운드별로 poison을 사용했을 때 기대되는 이익을 저장한 후 정렬해 poison을 사용할 라운드 k개를 정했다.if문만으로 어떻게 잘 해보려다가 괜히 시간만 잡아먹은 것 같다...^_ㅠ 코드import sysinput = sys.stdin.readlinen, x, r, p, k = map(int, input().split())regeneration = [1 if x == '1' else 0 for x in input().rstrip()]#regeneration 스택, poison 스택r_s, p_s = 0, 0ans = 0#해당 라운드에 poison을 사용했을 때 기대되는 이익#(poison을 사용함으로써 누적될 데..

알고리즘 2025.08.28
728x90