목록Algorithm/백준 (21)
DANIELOGIC

[Python] 백준 1920번 수 찾기https://www.acmicpc.net/problem/1920문제코드import sysn = int(sys.stdin.readline())n_list = set(map(int,sys.stdin.readline().split()))m = int(sys.stdin.readline())m_list = list(map(int,sys.stdin.readline().split()))for x in m_list: if x in n_list: print(1) else: print(0)리뷰크게 2가지 풀이 방법이 존재한다.1. 이진 탐색(이분 탐색) 활용2. 집합 자료형 활용1번의 경우 이진 탐색 개념은 알고 있었으나 지금까지 문제를 풀면서 ..

[Python] 백준 1181번 단어 정렬 https://www.acmicpc.net/problem/1181문제코드n = int(input())l = []for i in range(n): l.append(input())l = set(l)l = list(l)l.sort()l.sort(key=len)for x in l: print(x)리뷰for문을 통해 정렬 알고리즘을 여러번 구현하려고 시도했으나 출력은 제대로 나왔지만 계속 시간 초과가 떴다. 다른 사람이 짠 코드를 보니 내가 몰랐던 개념들이 필요했다.1. sort() 함수에서 key라는 인자로 len을 넘겨주면 글자 수 기준으로 정렬해준다.2. sort() 함수의 우선순위를 lambda로 정할 수 있다.다만 람다는 아직 낯설기 때문에 1번을 사..

[Python] 백준 1018번 체스판 다시 칠하기https://www.acmicpc.net/problem/1018문제코드n, m = map(int, input().split())l = []for i in range(n): l.append(list(input()))w_first = []b_first = []for i in range(n): temp_list1 = [] temp_list2 = [] for j in range(m): if (j%2 == 0 and i%2 == 0) or (j%2 != 0 and i%2 != 0): temp_list1.append("W") temp_list2.append("B") else: ..

[Python] 백준 2775번 부녀회장이 될테야https://www.acmicpc.net/problem/2775문제코드t = int(input())for i in range(t): k = int(input()) n = int(input()) l = [] for i in range(n): l.append(i+1) for i in range(0,k): sum = 0 for i in range(len(l)): sum += l[i] l[i] = sum print(l[n-1])리뷰수학적 규칙성을 찾기 위해 그림을 그렸지만, 그냥 중첩 for문을 사용해서 푸는 것이 훨씬 수월해 보였다.리스트 하나를 생성하..

[Python] 백준 2798번 블랙잭https://www.acmicpc.net/problem/2798문제코드n, m = map(int, input().split())l = list(map(int, input().split()))an = []for i in l: for j in l: for k in l: if i != j and j != k and i!= k and i + j + k 리뷰n을 안쓰고 풀어버렸다.당연히 시간 초과가 뜰거라고 생각해서일단 틀릴 마음으로 무작정 코드를 작성했는데시간 초과가 뜨지 않고 정답 처리가 되었다.정석 풀이를 찾아보니 range를 사용하고, max 함수에 두 값을 넣어서 결과를 도출했다.

[Python] 백준 2292번 벌집https://www.acmicpc.net/problem/2292문제코드n = int(input())if n == 1: print(n)else: a = 2 b = 7 for i in range(n): a = a + 6*i b = b + 6*(i) if n >= a and n 리뷰수학적 규칙성을 찾아서 문제를 풀었다.이런식으로 쭉 적었을 때,2, 8, 20, 38, 62 에서는 6, 12, 18, 24 씩 커지고7, 19, 37, 61, 91 에서는 12, 18, 24 씩 커진다.따라서 6의 배수만큼 범위가 커지는 것을 확인했다.

[Python] 백준 10809번 알파벳 찾기https://www.acmicpc.net/problem/10809문제코드a = input()for i in range(26): for x in a: if x == chr(i+97): print(a.index(x),end=" ") break if x != chr(i+97): print(-1,end=" ")리뷰아스키코드를 사용해서 쉽게 풀었다. a~z를 문자열로 선언하고 반복문을 사용하는 방법도 존재하는것 같다.확실히 C를 배우고 나니까 문자를 정수처럼 볼 수 있다는 것이 좋다.

[Python] 백준 2309번 일곱 난쟁이https://www.acmicpc.net/problem/2309문제코드l = []for i in range(9): l.append(int(input()))l.sort()k = sum(l)-100for i in range(9): if sum(l) == 100: break for x in range(i+1,9): if l[i] + l[x] == k: l[i] = l[x] = 0 breakfor _ in l: if _ != 0: print(_)리뷰일곱 난쟁이의 키를 전부 더하면 100이 되므로아홉 난쟁이의 키를 더한 뒤 100을 빼면 일곱 난쟁이가 아닌 두 난쟁이들의 ..