python 61

[백준][Python] 2847 게임을 만든 동준이

🎮 https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 내 풀이 N = int(input()) score = [] ans = 0 for _ in range(N): score.append(int(input())) for i in range(N-1, 0, -1): if score[i-1] >= score[i]: new_score = score[i] - 1 ans += score[i-1] - new_score score[i-1] = new_score ..

코딩테스트 2024.03.19

[백준][Python] 22352 항체 인식

💉 https://www.acmicpc.net/problem/22352 22352번: 항체 인식 첫 번째 줄에는 SP 촬영 결과의 크기를 의미하는 두 정수 $N$과 $M$이 주어진다. ($1 \le N, M \le 30$) 이는 촬영 결과가 세로로 $N$칸, 가로로 $M$칸 크기의 격자라는 것을 의미한다. 다음 $N$개의 줄에는 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): global change q = deque() q.append((x,y)) visited[x][y] = True current = after[x][y] # 현재 영역의 값 if before[x][y] != current: # 백신을 놓기 전과 후의 결과가 다를 때..

코딩테스트 2024.03.18

[백준][Python] 2003 수들의 합 2

🔢 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 내 풀이 N, M = map(int, input().split()) num = list(map(int, input().split())) s = e = 0 ans = 0 while s e: e += 1 elif M > sum(num[s:e+1]): e += 1 else: s += 1 if s > e: e += 1 print(ans) 코드 설명 s: 시작 ..

코딩테스트 2024.03.17

[백준][Python] 13265 색칠하기

🖍️ https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net 내 풀이 from collections import deque def bfs(c): q = deque() q.append(c) while q: current = q.popleft() if color[current] == '': # 현재 좌표의 색이 없다면, 연결된 동그라미들의 색을 확인한 후 결정해야 함 b_count = w_count = 0 for k in arr[current]: if color[k] == '..

코딩테스트 2024.03.17

[백준][Python] 1245 농장 관리

⛰️ https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): peak = [] q = deque() q.append((x,y)) peak.append([x,y]) current = arr[x][y] # 현재 좌표의 높이 while q: cx, cy = q.popleft() for k in range(8): nx, ny = cx + d..

코딩테스트 2024.03.15

[백준][Python] 2660 회장뽑기

🤴🏻 https://www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net 내 풀이 from collections import deque def bfs(s): visited[s] = True q = deque() q.append(s) while q: c = q.popleft() for k in member[c]: if not visited[k]: visited[k] = True score[k] = score[c] + 1 q.append(k) final_score.a..

코딩테스트 2024.03.14

[백준][Python] 2885 초콜릿 식사

🍫 https://www.acmicpc.net/problem/2885 2885번: 초콜릿 식사 학교 근처 편의점에 새 초콜릿이 들어왔다. 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다. 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다. 즉, 1, 2, 4, 8, 16, ... www.acmicpc.net 내 풀이 K = int(input()) size = 0 # 구매해야하는 가장 작은 초콜릿의 크기 ans = 0 # 최소 몇 번 쪼개야 하는지 exponent = 0 # 현재 지수 arr = [] # 현재 초콜릿들의 사이즈 while True: if pow(2, exponent) >= K: size = pow(2, exponent) arr.append(size) break..

코딩테스트 2024.03.13

[백준][Python] 2589 보물섬

💎 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y): q = deque() q.append((x, y)) distance = 0 temp = [[0] * M for _ in range(N)] visited = [[False] * M for _ in range(N)] visited[x][y] = True while q: cx, cy = q.popleft() for..

코딩테스트 2024.03.12

[백준][Python] 11728 배열 합치기

👩🏻‍💻 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 내 풀이 (정렬 ver) N, M = map(int, input().split()) arr = [] for _ in range(2): arr += list(map(int, input().split())) print(*sorted(arr)) 초간단 풀이! A와 B를 입력받아 정답 배열 arr에 추가해 준 뒤, arr를 정렬한다. 내 풀이 (투포인터 ver..

코딩테스트 2024.03.12

[백준][Python] 2018 수들의 합 5

🔢 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 내 풀이 N = int(input()) num = [x for x in range(1, N+1)] s, e = 0, 1 ans = 0 while s N: s += 1 else: s += 1 e = s + 1 ans += 1 pr..

코딩테스트 2024.03.11