백준 93

백준 7568번 덩치 파이썬

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 내 코드 big = [] result = [] N = int(input()) for i in range(N): x, y = list(map(int, input().split())) big.append((x, y)) for i in range(N): cnt = 1 for j in range(N): if big[i][0] < big[j][0] and big[i][1] < big[j][1]..

BOJ/Python 2024.03.22

백준 14502번 연구소 파이썬 BFS

https://www.acmicpc.net/problem/14502 14502번: 연구소인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크www.acmicpc.net 내 답안import sys import copy from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) lab = [list(map(int, input().split())) for _ in range(N)] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def find_spaces(lab..

BOJ/Python 2024.03.20

백준 14719번 빗물 파이썬

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 내 코드 h, w = map(int, input().split()) blocks = list(map(int, input().split())) result = 0 for i in range(1, w-1): left_max = max(blocks[:i]) right_max = max(blocks[i+1:]) standard = min(left_max, right_max) depth ..

BOJ/Python 2024.03.19

백준 1966번 프린터 큐 파이썬

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 내 답안 from collections import deque N = int(input()) for i in range(N): N, M = map(int, input().split()) priority = deque(list(map(int, input().split()))) ind = deque([i for i in range(N)]) cnt = 0 while priority: m = max(prio..

BOJ/Python 2024.03.08

백준 25305번 커트라인 파이썬

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N, K = map(int, input().split()) score = sorted(list(map(int, input().split()))) print(score[N-K]) Review 이 문제는 구현과, 정렬 보다는 N, K = map(int, input().split()) score = sorted(list(map(int, input().split()))) 입력을 어떤 식으로 받는지가..

BOJ/Python 2023.01.19

백준 10814번 나이순 정렬 파이썬

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 내 코드 import sys input = sys.stdin.readline N = int(input()) member = [] for i in range(N): x, y = input().split() member.append([int(x), y, i]) result = sorted(member, key = lambda x: (x[0], x[2])) for i in range(N): print(res..

BOJ/Python 2023.01.18

백준 1316번 그룹 단어 체커 파이썬

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 내 답안 N = int(input()) check = 0 for i in range(N): x = input() group = [x[0]] for j in range(1, len(x)): if group[-1] != x[j]: group.append(x[j]) if len(set(group)) == len(group): check += 1 print(check) R..

BOJ/Python 2022.12.04

백준 5585번 거스름돈 파이썬

https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 내 답안 en = [500, 100, 50, 10, 5, 1] cnt = 0 x = 1000 - int(input()) for i in en: cnt += (x // i) x %= i print(cnt) Review 그리디 알고리즘의 매우 간단한 대표적인 문제이다. 코드가 이해 안된다면 아래 글을 참고 하자. https://thingjin.tistory.com/entry/%E..

BOJ/Python 2022.12.03

백준 1541번 잃어버린 괄호 파이썬

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 내 답안 x = input().rstrip().split('-') result = [sum(map(int, i.split('+'))) for i in x] print(result[0] - sum(result[1:])) REVIEW 문제를 보면서 어떻게 하면 잘 계산을 할 수 있을까 고민을 하였다. 내가 생각한 순서는 이렇다. 1번 "-" 단위로 끊어서 리스트를 만든다. -> ["55", "5..

BOJ/Python 2022.12.02

백준 10809번 알파벳 찾기 파이썬

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net x = input() result = [-1]*26 # 전체 -1 for i in x: c = ord(i) - 97 result[c] = x.index(i) # 알파벳 처음 등장 위치 for i in result: print(i, end = ' ') 처음 for 문을 통해 구현을 할 수 있으면 간단하게 생각할 수 있는 문제였다. 여기서 ord 함수는 문자 --> 유니코드로 변경해 주는..

BOJ/Python 2022.01.29