본문 바로가기

알고리즘/백준

(45)
[Python] 백준 파이썬 1018 체스판 다시 칠하기 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 첫 시도 # 백준 1018 체스판 다시 칠하기 m, n = map(int, input().split()) plate = [] for _ in range(m): plate.append(list(input())) need_draw_square=[] for i in range(m-7): for j in range(n-7): cnt = 0 # 몇 번 색칠하는지 for w in range(8): f..
[Python] 백준 파이썬 7568 덩치 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net # 백준 7568 덩치 n = int(input()) tall = [] weight = [] for _ in range(n): t, w = map(int, input().split()) tall.append(t) weight.append(w) # 자신보다 덩치가 큰 사람 수 bigger_cnt = [] for i in range(n): bigger = 0 # 나보다 큰 사람 수 sam..
[Python] 백준 파이썬 2232 분해합 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net # 백준 2231 분해합 n = input() n_list = list(map(int, n)) #1 n_len = len(n_list) #2 generator_list = [] for i in range(10 * n_len): #3 num = int(n) - i if num < 0 : #4 break num_list = list(map(int, str(num))) #5..
[Python] 백준 파이썬 2798 블랙잭 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net # 백준 2798 블랙잭 n, m = map(int,input().split()) card = list(map(int, input().split())) sum_list = [] for i in range(n-2): for j in range(i+1, n-1): for k in range(j+1, n): sum = card[i] + card[j] + card[k] i..
[Python] 백준 파이썬 25501 재귀의 귀재 https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net # 백준 25501 재귀의 귀재 def recursion(s, l, r): if l >= r: return 1, l+1 elif s[l] != s[r]: return 0, l+1 else: return recursion(s, l+1, r-1) def isPalindrome(s): return recursion(s, 0, len(s)-1) t = int(input()) for i in range(t): s = input() answer = list(i..
[Python] 백준 파이썬 18870 좌표 압축 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 첫 시도 # 백준 18870 좌표 압축 n = int(input()) x_list = input().split() x_list_2 = [] for i in range(len(x_list)): k = 0 for j in range(len(x_list)): if int(x_list[i]) > int(x_list[j]): k += 1 x_list_2.a..
[Python] 백준 파이썬 10814 나이순 정렬 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net # 백준 10814 나이순 정렬 n = int(input()) i = 1 # 1 가입 순서 user_list = [] for _ in range(n): age, name = input().split() user_list.append([int(age), name, i]) # 2 i += 1 user_list.sort(key = lambda x : (x[0], x[2])) # 3 for i in user_..
[Python] 백준 파이썬 1181 단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 중복 단어 제거 길이 순 정렬 후 사전 순 정렬 이 두가지 과정으로 진행하면 됩니다. import sys n = int(input()) word_list = [] for _ in range(n): word = sys.stdin.readline().strip() word_len = len(word) if [word_len, word] not in word_list: word_list.ap..