본문 바로가기

코딩 테스트

(65)
[백준 4344번 파이썬] 평균은 넘겠지 이번 문제는 처음으로 케이스 개수를 입력받고, 각 케이스마다 학생 수와 학생들이 받은 점수들을 입력받는다 그리고 평균값을 내고, 그 평균을 넘기는 학생의 수를 백분위 평균을 내서 출력하는 문제이다. num = int(input()) for i in range(num): a = list(map(int, input().split())) avg = sum(a[1:])/a[0] count = 0 for score in a[1:]: if score > avg: count += 1 print('%.3f' %((count/a[0])*100)+'%') 여기에서 중요한 것은 a[1:]/a[0] 부분이다 케이스를 입력받는 구조 상 첫번째 숫자는 학생 수고, 그 이후로는 학생들이 각자 받은 점수들이다 즉, sum(a[1:]..
[백준 8958번 파이썬] OX퀴즈 이번 문제는 복잡해 보이지만 이해하면 쉬운 문제인데 일단 첫 번째로는 입력할 수 있는 케이스의 개수를 정하고 O와 X 이루어지면 긴 문자열을 각각 받는다 이 문자열에서 O가 있으면 1 점을 추가로 얻고, X가 있으면 1점을 얻지 못하는데 이때 O가 연속으로 배열돼 있으면 추가로 얻을 1의 숫자가 하나씩 올라간다 num = int(input()) for i in range(num): a = str(input()) score = 0 get = 0 for k in list(a): if k == 'O': score += 1 get += score else: score = 0 print(get) 중첩된 for 문 안에서 score와 get의 숫자를 따로 올림으로써 문제의 내용을 구현할 수 있다
[백준 1546번 파이썬] 평균 이번 문제는 입력 받을 숫자의 개수를 입력받고 이어 그 개수만큼의 숫자를 입력받은 뒤 그 숫자들의 평균을 구하면 되는 문제이다 예제에도 자세히 나와 있듯이 소수 2번째 자리까지 출력하라는 의미가 아니기 때문에 그저 간단하게 평균을 구한 값을 출력해주면 된다 num = int(input()) score = list(map(int, input().split())) total = 0 for i in range(num): total += (score[i]/max(score))*100 print(total/num) score 변수에 입력값을 받고 문제 속 아이가 이상한 방식으로 새롭게 계산한 수식을 이용해 total에 새로운 점수를 입력해 준다 그리고 마지막에 출력할 때만 이 total 변수로 평균값을 계산해주기..
[백준 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: ..