728x90
단계 | 문제 번호 | 제목 | 내 코드 | 코드 비교 |
1 | 2798 | 블랙잭 | n,m = map(int,input().split()) cards = list(map(int,input().split())) li = [] for i in range(n): for j in range(n): for k in range(n): if i!=j and j!=k and k!=i: sum = cards[i]+cards[j]+cards[k] if sum <= m: li.append(sum) print(max(li)) idx = li.index(max(li)) |
|
넘지 않아야한다 -> 같거나 작다 카드 뽑기 중복 허용 안됨 -> if i!=j and j!=k and k!=i: |
||||
2 | 2231 | 분해합 | n= int(input()) for i in range(1,n+1): li = map(int, list(str(i))) #각 자리수 리스트 total_sum = i + sum(li) if total_sum == n: m = i break try: print(m) except: print(0) |
|
python에서 undefine 처리는 try- except문을 사용하자 | ||||
3 | 19532 | 수학은 비대면강의입니다 | a, b, c, d, e, f = map(int, input().split()) x = int((e*c-b*f) / (a*e -b*d)) y = int((-d*c+a*f) / (a*e -b*d)) print(x,y) |
|
행렬식으로 풀었다. | ||||
4 | 1018 | 체스판 다시 칠하기 | m, n = map(int, input().split()) input_arr = [] for i in range(m): row = list(input().strip()) input_arr.append(row) arr_1 = [ ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ] arr_2 = [ ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ['B','W','B','W','B','W','B','W'], ['W','B','W','B','W','B','W','B'], ] sum_1_li =[] sum_2_li = [] for i in range(m-8+1): #행 for j in range(n-8+1): #열 sum_1 = 0 sum_2 = 0 for k in range(0,8): for l in range(0,8): if input_arr[i+k][j+l] != arr_1[k][l]: sum_1 +=1 if input_arr[i+k][j+l] != arr_2[k][l]: sum_2 +=1 sum_1_li.append(sum_1) sum_2_li.append(sum_2) print(min([min(sum_1_li),min(sum_2_li)])) |
N, M = map(int, input().split()) original = [] count = [] for _ in range(N): original.append(input()) for a in range(N-7): for b in range(M-7): index1 = 0 index2 = 0 for i in range(a, a+8): for j in range(b, b+8): if (i+j) % 2 == 0: if original[i][j] != 'W': index1 += 1 if original[i][j] != 'B': index2 += 1 else: if original[i][j] != 'B': index1 += 1 if original[i][j] != 'W': index2 += 1 count.append(min(index1, index2)) print(min(count)) |
5 | 1436 | 영화감독 숌 | n = int(input()) cnt = 0 six_n = 666 while True: if '666' in str(six_n): cnt += 1 if cnt == n: print(six_n) break six_n += 1 |
|
6 | 2839 | 설탕 배달 | n = int(input()) cnt = 0 max_i = n // 5 + 1 max_j = n // 3 + 1 li = [] for i in range(max_i): for j in range(5000): if 5*i + 3*j == n: li.append(i+j) if (li != []): print(min(li)) else: print(-1) |
num = int(input()) count = 0 while num >= 0: if num % 5 == 0: count += int(num // 5) print(count) break num -= 3 count += 1 else: print(-1) |
5*i + 3*j == n: 이부분을 생각하는게 중요했던 것 같다. 처음에 n=n%5 이런식으로 먼저 5를 나누고 시작했는데 그래서 6의 경우 3만으로 이루어져 있어서 오류가 났고, 11의 경우 5로 나눈 나머지가 1이되서 오류가 났다. |
728x90
'코딩테스트 > 백준) 단계별로 풀기' 카테고리의 다른 글
백준- 단계별로 풀어보기| 11단계- 시간 복잡도 (0) | 2023.04.13 |
---|---|
백준- 단계별로 풀어보기| 10단계- 기하: 직사각형과 삼각형 (0) | 2023.04.13 |
백준- 단계별로 풀어보기| 9단계- 약수, 배수와 소수 (0) | 2023.04.13 |
백준- 단계별로 풀어보기| 8단계- 일반 수학1 (0) | 2023.04.06 |
백준- 단계별로 풀어보기| 7단계- 2차원 배열 (0) | 2023.04.04 |