백준 57

[백준][Python] 11508 2+1 세일

🥛 https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 내 풀이 N = int(input()) C = [] ans = 0 for _ in range(N): C.append(int(input())) C = sorted(C, reverse=True) # 내림차순 정렬 while len(C) >= 3: # 한 번에 3개의 유제품을 사는 경우 dairy = C[0:3] ans += sum(dairy) - min(dairy) del C[0:3] ..

코딩테스트 2024.04.02

[백준][Python] 11723 집합

🌅 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 내 풀이 import sys M = int(sys.stdin.readline()) S = set() for _ in range(M): command = sys.stdin.readline().split() c1 = command[0] if len(command) == 2: c2 = int(command[1]) # add if c1 == 'add': S.add(c2) # remove elif c1 == 'remove': S.disc..

코딩테스트 2024.04.01

[백준][Python] 10431 줄세우기

👩🏻‍🎓 https://www.acmicpc.net/problem/10431 10431번: 줄세우기 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1 www.acmicpc.net 내 풀이 P = int(input()) for _ in range(P): lst = list(map(int, input().split())) T = lst[0] height = lst[1:] line_up = [height[0]] # 첫 번째 학생 추가 ans = 0 for i in range(1, 20): if height[i] > max(line_up): # 자기 앞에 자기보다 키가 큰 학..

코딩테스트 2024.03.31

[백준][Python] 22251 빌런 호석

🛗 https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 내 풀이 def onoff(nX): global result ans = 0 if nX N: return currentX = list(f'{X:0{K}d}') currentnX = list(f'{nX:0{K}d}') for i in range(K): currentXNum = num[currentX[i]].copy() currentnXNum = num[currentnX[i]].copy() common_values = [value for value in curre..

코딩테스트 2024.03.30

[백준][Python] 25757 임스와 함께하는 미니게임

🃏 https://www.acmicpc.net/problem/25757 25757번: 임스와 함께하는 미니게임 첫 번째 줄에는 사람들이 임스와 같이 플레이하기를 신청한 횟수 $N$과 같이 플레이할 게임의 종류가 주어진다. $(1 \le N \le 100\,000)$ 두 번째 줄부터 $N$개의 줄에는 같이 플레이하고자 하는 사람들 www.acmicpc.net 내 풀이 (1차) N, game = input().split() names = [] player = 0 if game == 'Y': player = 1 elif game == 'F': player = 2 else: player = 3 for _ in range(int(N)): names.append(input()) print(len(set(names)..

코딩테스트 2024.03.29

[백준][Python] 9017 크로스 컨트리

🏃🏻‍♀️ https://www.acmicpc.net/problem/9017 9017번: 크로스 컨트리 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 케이스로 주어진다. 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 T 가 주어진다. 두 번째 줄부터는 두 줄에 하나의 www.acmicpc.net 정답 코드 T = int(input()) for _ in range(T): N = int(input()) t = list(map(int, input().split())) out = [] # 참가 선수가 6명 미만인 팀 번호 저장 score = {} # 6명 미만인 팀 번호 저장 for i in t: if t.count(i) < 6: out.append(i) else: # 점수 초기화 ..

코딩테스트 2024.03.29

[백준][Python] 7490 0 만들기

🧮 https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 내 풀이 def dfs(n, s): if n == N: s += str(N) ns = ''.join(s.split()) if eval(ns) == 0: ans.append(s) return dfs(n+1, s + str(n) + '+') dfs(n+1, s + str(n) + '-') dfs(n+1, s + str(n) + ' ') T = int(input()) for _ in range(T): ans = [] N = int(input()) df..

코딩테스트 2024.03.28

[백준][Python] 10828 스택

📚 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 내 풀이 import sys N = int(sys.stdin.readline()) stack = [] for _ in range(N): command = list(sys.stdin.readline().split()) if command[0] == 'push': stack.append(command[1]) elif command[0] == 'pop': if len(stack) ..

코딩테스트 2024.03.27

[백준][Python] 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()) arr = [[0] * W for _ in range(H)] height = list(map(int, input().split())) ans = 0 for i in range(W): for j in range(H-height[i], H): arr[j][i] = 1 for i in range(H): block..

코딩테스트 2024.03.25