languages/coding test
-
단계별로 풀어보기 > 단계 13: 정렬 > 25305번 #25305: 커트라인 n, m = map(int, input().split()) arr = list(map(int, input().split())) arr.sort() print(arr[-m]) 리스트를 정렬하고, 뒤에서 m번째 숫자가 커트라인이 되므로 이를 출력해줍니다.
[백준/Python] 25305번: 커트라인단계별로 풀어보기 > 단계 13: 정렬 > 25305번 #25305: 커트라인 n, m = map(int, input().split()) arr = list(map(int, input().split())) arr.sort() print(arr[-m]) 리스트를 정렬하고, 뒤에서 m번째 숫자가 커트라인이 되므로 이를 출력해줍니다.
2024.03.13 -
단계별로 풀어보기 > 단계 13: 정렬 > 2587번 #2587: 대표값2 num = [] for i in range(5): num.append(int(input())) num.sort() total = sum(num) print(int(total/5)) print(num[2]) 리스트를 정렬해주는 sort() 메서드를 사용하면 반복문 없이도 리스트를 정렬할 수 있습니다. 이중 반복문으로도 가능하지만 정렬과 합계에서 런타임 에러가 나 sort, sum 함수를 사용합니다.
[백준/Python] 2587번: 대표값2단계별로 풀어보기 > 단계 13: 정렬 > 2587번 #2587: 대표값2 num = [] for i in range(5): num.append(int(input())) num.sort() total = sum(num) print(int(total/5)) print(num[2]) 리스트를 정렬해주는 sort() 메서드를 사용하면 반복문 없이도 리스트를 정렬할 수 있습니다. 이중 반복문으로도 가능하지만 정렬과 합계에서 런타임 에러가 나 sort, sum 함수를 사용합니다.
2024.03.12 -
단계별로 풀어보기 > 단계 13: 정렬 > 2750번 #2750: 수 정렬하기 n = int(input()) num = [] for i in range(n): num.append(int(input())) for k in range(n): for i in range(n-1): if num[i] > num[i+1]: num[i], num[i+1] = num[i+1], num[i] for i in range(n): print(num[i]) 리스트의 i번째 항목과 i+1번째 항목을 비교해서 i번째 항목이 더 크다면 둘의 순서를 바꾸는 작업을 리스트 끝까지 반복한 뒤, 해당 과정을 리스트의 항목 수만큼 반복합니다.
[백준/Python] 2750번: 수 정렬하기단계별로 풀어보기 > 단계 13: 정렬 > 2750번 #2750: 수 정렬하기 n = int(input()) num = [] for i in range(n): num.append(int(input())) for k in range(n): for i in range(n-1): if num[i] > num[i+1]: num[i], num[i+1] = num[i+1], num[i] for i in range(n): print(num[i]) 리스트의 i번째 항목과 i+1번째 항목을 비교해서 i번째 항목이 더 크다면 둘의 순서를 바꾸는 작업을 리스트 끝까지 반복한 뒤, 해당 과정을 리스트의 항목 수만큼 반복합니다.
2024.03.11 -
단계별로 풀어보기 > 단계 12: 브루트 포스 > 2839번 #2839: 설탕 배달 n = int(input()) cnt = 0 while n>=0: if n % 5 == 0: cnt += (n//5) print(cnt) break n -= 3 cnt += 1 else: print(-1) 주어진 설탕 무게가 5로 나누어떨어지면 해당 나눗셈의 몫을 카운트에 추가합니다. 그렇지 않을 경우 3을 뺀 뒤 카운트를 하나씩 증가시킵니다. 매 반복 때마다 3을 빼고 5로 나누어떨어지는지 확인하고, n이 5로 나누어떨어지지 않으면서 3으로 조합이 되지 않는 경우 -1을 출력합니다.
[백준/Python] 2839번: 설탕 배달단계별로 풀어보기 > 단계 12: 브루트 포스 > 2839번 #2839: 설탕 배달 n = int(input()) cnt = 0 while n>=0: if n % 5 == 0: cnt += (n//5) print(cnt) break n -= 3 cnt += 1 else: print(-1) 주어진 설탕 무게가 5로 나누어떨어지면 해당 나눗셈의 몫을 카운트에 추가합니다. 그렇지 않을 경우 3을 뺀 뒤 카운트를 하나씩 증가시킵니다. 매 반복 때마다 3을 빼고 5로 나누어떨어지는지 확인하고, n이 5로 나누어떨어지지 않으면서 3으로 조합이 되지 않는 경우 -1을 출력합니다.
2024.03.09 -
단계별로 풀어보기 > 단계 12: 브루트 포스 > 1436번 #1436: 영화감독 숌 n = int(input()) num = 666 #start number cnt = 0 while True: if '666' in str(num): cnt += 1 if cnt == n: print(num) break num += 1 첫 번째 영화 번호 666부터 시작합니다. num에 666이 포함되어 있으면 카운트를 하나씩 증가합니다. 해당 카운트는 몇 번째 영화인지를 나타냅니다. 카운트가 n과 같으면 반복문을 그만두고, 아니라면 num을 1씩 증가시킵니다.
[백준/Python] 1436번: 영화감독 숌단계별로 풀어보기 > 단계 12: 브루트 포스 > 1436번 #1436: 영화감독 숌 n = int(input()) num = 666 #start number cnt = 0 while True: if '666' in str(num): cnt += 1 if cnt == n: print(num) break num += 1 첫 번째 영화 번호 666부터 시작합니다. num에 666이 포함되어 있으면 카운트를 하나씩 증가합니다. 해당 카운트는 몇 번째 영화인지를 나타냅니다. 카운트가 n과 같으면 반복문을 그만두고, 아니라면 num을 1씩 증가시킵니다.
2024.03.08 -
단계별로 풀어보기 > 단계 12: 브루트 포스 > 1018번 #1018: 체스판 다시 칠하기 n, m = map(int, input().split()) chess = [] cnt = [] for i in range(n): chess.append(input()) for a in range(n-7): for b in range(m-7): #자르기 작업 w_idx=0 b_idx=0 for i in range(a,a+8): for j in range(b,b+8): if (i+j) % 2 == 0: #짝수 인덱스에 대해 if chess[i][j] != 'W': w_idx += 1 #W이 아니면 W 횟수 증가 else: b_idx += 1 #W이면 B 횟수 증가 else: #홀수 인덱스에 대해 if chess[i]..
[백준/Python] 1018번: 체스판 다시 칠하기단계별로 풀어보기 > 단계 12: 브루트 포스 > 1018번 #1018: 체스판 다시 칠하기 n, m = map(int, input().split()) chess = [] cnt = [] for i in range(n): chess.append(input()) for a in range(n-7): for b in range(m-7): #자르기 작업 w_idx=0 b_idx=0 for i in range(a,a+8): for j in range(b,b+8): if (i+j) % 2 == 0: #짝수 인덱스에 대해 if chess[i][j] != 'W': w_idx += 1 #W이 아니면 W 횟수 증가 else: b_idx += 1 #W이면 B 횟수 증가 else: #홀수 인덱스에 대해 if chess[i]..
2024.03.08 -
단계별로 풀어보기 > 단계 12: 브루트 포스 > 19532번 #19532: 수학은 비대면강의입니다 a, b, c, d, e, f = map(int, input().split()) for x in range(-999,1000): for y in range(-999,1000): if a*x + b*y == c and d*x + e*y == f: print(x, y) break x, y의 범위가 -999에서 999까지이므로 수학적인 알고리즘을 작성하기보다 이중 반복문을 이용합니다. 두 식을 모두 만족하면 x, y를 출력합니다.
[백준/Python] 19532번: 수학은 비대면강의입니다단계별로 풀어보기 > 단계 12: 브루트 포스 > 19532번 #19532: 수학은 비대면강의입니다 a, b, c, d, e, f = map(int, input().split()) for x in range(-999,1000): for y in range(-999,1000): if a*x + b*y == c and d*x + e*y == f: print(x, y) break x, y의 범위가 -999에서 999까지이므로 수학적인 알고리즘을 작성하기보다 이중 반복문을 이용합니다. 두 식을 모두 만족하면 x, y를 출력합니다.
2024.03.08 -
단계별로 풀어보기 > 단계 12: 브루트 포스 > 2231번 #2231: 분해합 n = int(input()) for i in range(1, n+1): part = sum((map(int, str(i)))) total = i + part if total == n: print(i) break if i == n: print(0) 1부터 n까지 각 자리의 숫자를 모두 더한 값을 part에, 이를 해당 숫자와 더한 분해합을 rotal에 저장합니다. total이 n이랑 같을 때 반복문을 중단합니다. 생성자가 없는 경우는 해당 숫자와 n이 같은 경우이므로 해당 케이스도 조건문에 추가해줘야 합니다.
[백준/Python] 2231번: 분해합단계별로 풀어보기 > 단계 12: 브루트 포스 > 2231번 #2231: 분해합 n = int(input()) for i in range(1, n+1): part = sum((map(int, str(i)))) total = i + part if total == n: print(i) break if i == n: print(0) 1부터 n까지 각 자리의 숫자를 모두 더한 값을 part에, 이를 해당 숫자와 더한 분해합을 rotal에 저장합니다. total이 n이랑 같을 때 반복문을 중단합니다. 생성자가 없는 경우는 해당 숫자와 n이 같은 경우이므로 해당 케이스도 조건문에 추가해줘야 합니다.
2024.03.08