목록STUDY (96)
STUDY_SEONMIN
어떤 함수 d(n)을 n과 n의 각 자리를 더하는 함수라고 정의하겠습니다. ex : d(75) = 75 + 7 + 5 = 87 이때 75는 87의 생성자라고 합니다. 이러한 생성자가 없는 숫자를 "셀프 넘버"라고 합니다. 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하세요. def d(n): s = n for num in str(n): s += int(num) return s num_list = [n for n in range(1,10001)] dn_list = [d(n) for n in num_list] for n in num_list: if n not in dn_list: print(n) 우선 함수 d(n)을 정의하고 d(n)의 결과값들, 즉 생성자가 존재하는 값들을..
정수 n개가 주어졌을 때 n개의 합을 구하는 함수를 작성하세요. 함수는 입력으로 리스트를 받아 출력으로 정수를 출력합니다. def solve(a): ans = sum(a) return ans
첫째 줄에는 테스트 케이스의 개수 C가 주어집니다. 둘째 줄부터 각 테스트 케이스마다 학생의 수(N)가 첫 수로 주어지고 이어서 N명의 점수가 주어집니다. 각 케이스마다 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력하는 프로그램을 작성하세요. C = int(input()) for _ in range(C): X = list(map(int, input().split())) N, scores = X[0], X[1:] mean = sum(scores)/N cnt = 0 for score in scores: if score > mean: cnt += 1 print("{:.3f}%".format(round(cnt/N*100,3))) {:.3f}는 소수점 셋째자리까지의 실수로 포맷팅하겠다는 의미입..
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있습니다. O는 문제를 맞은 것, X는 문제를 틀린 것입니다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 됩니다. 이러한 방식대로 "OOXXOXXOOO"의 점수를 계산하면 1+2+0+0+1+0+0+1+2+3 = 10 이 됩니다. OX퀴즈의 결과가 주어졌을 때 점수를 구하는 프로그램을 작성하세요. 첫째 줄에는 테스트 케이스의 개수가 주어지고 각 테스트 케이스마다 퀴즈 결과를 입력받습니다. T = int(input()) for _ in range(T): result = input() score = 0 point = 0 for OX in result: if OX == 'O': point += 1 else: point = 0 score +..
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값(M)을 골랐다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 첫째 줄에는 시험 본 과목의 개수 N, 그 다음 줄에는 현재 성적을 입력받습니다. N = int(input()) scores = list(map(int,input().split())) M = max(scores) for i in range(len(scores)): scores[i] = scores[i]/M*10..
10개의 수를 입력받은 뒤 이를 42로 나눈 나머지를 구합니다. 그리고 구해진 나머지들 중에서 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하세요. nums = [int(input())%42 for _ in range(10)] print(len(set(nums))) set 자료형은 중복된 값이 허용되지 않는 자료형입니다. 리스트 데이터를 set 타입으로 형변환하면 중복된 값들은 자동으로 제거가 되어 유니크한 값들만 남게 됩니다. 이러한 원리는 이용해 set자료형으로 형변환후 길이를 구하면 서로 다른 값이 몇 개 있는지 알 수 있습니다.
세 개의 자연수 A,B,C가 주어질 때 A x B x C를 계산한 결과값에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지 구하는 프로그램을 작성하세요. A = int(input()) B = int(input()) C = int(input()) D = str(A * B * C) for i in range(10): print(D.count(str(i))) 문자열 데이터는 count라는 메서드를 가지고 있습니다. 해당 메서드는 인풋으로 들어온 값이 전체 문자열에 몇 번 쓰였는지를 반환합니다.
9개의 서로 다른 자연수가 주어질 때, 이들 중 최대값을 찾고 최대값이 몇 번째 수인지를 구하는 프로그램을 작성하세요. nums = [int(input()) for _ in range(9)] print(max(nums)) print(nums.index(max(nums))+1) 리스트 타입의 객체는 index라는 메서드를 가지고 있습니다. 해당 메서드는 인풋으로 들어온 값이 리스트의 몇 번째에 위치하는지를 반환해줍니다. 파이썬에서 index는 0부터 시작하므로 최종 결과에 +1을 해서 몇 번째 수인지를 찾아주었습니다.
N개의 정수가 주어질 때 최소값과 최대값을 구하는 프로그램을 작성하세요. 첫째 줄에는 정수의 개수 N, 둘째 줄에는 N개의 정수를 공백으로 구분해서 입력받습니다. N = int(input()) nums = list(map(int,input().split())) print(min(nums), max(nums)) 내장함수 max와 min을 이용하면 손쉽게 최대 최소를 구할 수 있습니다. max와 min함수는 iterable한 데이터(ex:리스트)를 인풋으로 받으면 해당 데이터가 가지고 있는 value들 중에서 최대, 최소를 반환해줍니다.
0~99사이의 숫자가 주어질 때 다음과 같은 연산을 합니다. 우선 주어진 숫자가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고 각 자리의 숫자를 더합니다. 그 다음 주어진 수의 가장 오른쪽 자리 수와 방금 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만듭니다. ex) 26, (2+6=8), 68, (6+8=14), 84, (8+4=12), 42, (4+2=6), 26 이렇게 위에서 언급한 연산을 반복할 경우 26은 4번만에 원래의 수로 돌아오게 되며 이것을 보고 사이클의 길이가 4라고합니다. 0~99사이의 임의의 숫자 N이 주어졌을 때 N의 사이클의 길이를 구하는 프로그램을 작성하세요. def calculator(number): if number < 10: return 10*numb..