본문 바로가기

코딩 테스트/백준 파이썬 문제 풀이

(62)
[백준 3052번 파이썬] 나머지 숫자를 열 개 받은 후 각자 42 나머니 나눗셈 결과값의 종류의 개수를 출력하기만 하면 된다 즉, 열 개의 숫자를 42로 나눈 나머지가 전부 0이라면 나머지의 종류 수는 0 하나뿐이기 때문에 1을 출력하면 된다 A = [] B = [] C = [] for i in range(10): A.append(int(input())) B.append(A[i]%42) if B[i] not in C: C.append(int(B[i])) print(len(C)) for 문을 돌리면서 각각 A에는 입력값을 넣고, B에는 들어온 입력값을 42로 나눈 것의 나머지를 넣고 그 나머지가 C 리스트에 존재하지 않으면 넣는 코드를 작성하고 C의 크기를 프린트하는 코드를 마지막으로 작성해주면 정답이 된다 즉, 각자 다른 종류의 나머지..
[백준 2577번 파이썬] 숫자의 개수 이번 문제는 세 개의 숫자를 입력받고 곱한 뒤 그 결과값에 0부터 9까지의 숫자가 몇개 들어가 있는지 출력하기만 하면 되는 문제이다 A = int(input()) B = int(input()) C = int(input()) total = list(str(A*B*C)) for i in range(10): print(total.count(str(i))) A, B, C 세 숫자를 입력받고 total에 곱셈의 결과를 집어넣는다 그리고 for 문을 돌리면서 count로 문자열 안에 해당 문자가 몇개 들어있는지 0부터 9까지 print하는 코드를 작성해주면 정답이 된다
[백준 2562번 파이썬] 최댓값 이번 문제는 9개의 문자를 한 줄씩 입력받고 입력받은 숫자들 중 최댓값을 출력한 뒤 몇 번째 인자인지도 함께 출력해야하는 문제이다 A = [] for i in range(9): A.append(int(input())) print(max(A)) print(A.index(max(A))+1) A를 리스트 형태의 변수로 선언한 뒤 for문과 append를 이용해 아홉 번의 숫자를 입력받는다 그리고 max를 이용해 최댓값을 출력하고 index를 이용해 인자의 순서를 출력하는데 이때 컴퓨터는 0부터 숫자를 세기 때문에 +1을 해줘야 한다
[백준 10818번 파이썬] 최소, 최대 이번 문제는 입력 받을 수의 개수를 입력받은 후 연달아 그 개수에 해당하는 숫자들을 받는다 출력에는 그 숫자들 중 최소값과 최대값을 내보내면 된다 count = int(input()) num = list(map(int, input().split())) print('{} {}'.format(min(num),max(num))) 이 문제에서 써야 할 핵심 함수는 min()과 max()이다 문자 그대로의 뜻을 가지고 있는 함수로 괄호 안에 들어와 있는 리스트에서 최소값과 최대값을 알아서 출력해준다 이전에 사용했던 f''처럼 ''.format을 이용하면 변수를 쉽게 원하는 형태로 출력할 수 있다
[백준 1110번 파이썬] 더하기 사이클 이번 문제는 이해하는 단계부터가 조금 어렵긴 하지만... 코테 문제들은 딱 수식을 설명해주는 부분만 보면 대부분 보다 쉽게 이해할 수 있다 이 문제는 입력받은 한자릿수~두자릿수를 이용해 무한 더하기를 하는 내용이다 두자릿수를 받은 경우: 첫번째 자릿수 + 두번째 자릿수 한자릿수를 받은 경우: 첫번째 자릿수 + 0 을 수행해서 나오는 수의 일의 자릿수는 다시 두번째 자릿수로 바뀌고, 원래 가지고 있었던 두번째 자릿수는 첫번째 자릿수로 바뀌게 된다 그렇게 반복적으로 수행하다가 결과값이 맨 처음에 입력받은 수가 되는 순간이 오는데, 여기에서 반복적으로 수행한 횟수를 '사이클'이라고 표현하고, 그 사이클을 출력해주면 된다 num = int(input()) BC = num count = 0 while True: ..
[백준 10951번 파이썬] A + B - 4 바로 전 문제와 매우 흡사하지만 훨씬 간단하다 0 0을 입력받았을 때 끝난다는 조건 없이 무한 반복하는 코드를 작성하면 된다 while True: try: A, B = map(int, input().split()) print(A+B) except: break try를 사용하지 않는 무한 반복하는 코드를 작성하게 되면 런타임 오류를 마주하게 되는데 그 이유는 이 문제를 채점할 때 두 수를 정갈하게 입력하는 테스트 입력값만 넣는 것이 아니기 때문이다 즉, '숫자 숫자' 형식이 아닌 다른 형식이 들어올 것을 대비해 try를 사용해 오류가 발생하면 알아서 반복문을 종료해주게 코딩해주면 정답을 맞힐 수 있게 된다
[백준 10952번 파이썬] A + B - 5 이전에 각 케이스마다 두 수를 합한 값을 출력해줬던 문제와 매우 흡사하다 다른 부분은 입력 받을 케이스의 수를 따로 정하지 않는다는 점이 있다 while 1: A, B = map(int, input().split()) if A == 0 and B == 0: break print(A+B) 입력받을 케이스의 수를 분명하게 정하지 않는 코드이기 때문에 while 문을 이용해 케이스 입력의 종료를 알리는 0 0이 들어올 때까지 출력을 반복한다 여기에서 break는 반복문의 종료를 의미한다
[백준 10871번 파이썬] X보다 작은 수 첫번째 줄에서 입력받을 수의 크기와 기준이 될 숫자가 같이 들어온다 그리고 첫번째 줄에 입력한 만큼의 수를 받고 그 수 중 기준이 될 숫자보다 작은 숫자들을 출력해주면 되는 문제이다 A, B = map(int, input().split()) L = list(map(int, input().split())) for i in range(A): if L[i] < B: print(L[i]) for문으로 L이라는 입력받은 숫자들의 정렬을 확인한다 입력받은 기준 숫자보다 작으면 바로 프린트하면 되는 문제이다 여기에서 결과값은 띄어쓰기로 분류해야 한다고 돼 있는데, print 함수를 쓰면 알아서 공백을 사이에 두고 출력된다