백준 1065 - 한수

문제설명 : www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 코드 n = int(input()) res = 0 for i in range(1,n+1): if i < 100 : res+=1 # 99이하의 수는 모두 한수이기 때문에 else: tmp = list(map(int,str(i))) # [1,2,3] if tmp[0] - tmp[1] == tmp[1] - tmp[2] : # 1000이하이므로 3자리 까지만 테스트케이스를 진행 res+=1 print(res)..

algorithm 2021.04.06

백준 4673 - 셀프넘버

문제설명 : www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 코드 def sol(): a_lst = set(range(1,10001)) # {1,2,3,...,10000} b_lst = set() # {} for i in a_lst: # 123 for j in str(i): # 1,2,3 i += int(j) # 123+1, 123+1+2, 123+1+2+3 b_lst.add(i) # 129 , 생성자가 있는..

algorithm 2021.04.06

백준 4344 - 평균은 넘겠지

문제링크 : www.acmicpc.net/problem/4344 코드 test_c = int(input()) for i in range(test_c): tmp = list(map(int,input().split())) score_avg = sum(tmp[1:])/tmp[0] # tmp[0] 은 학생수 tmp[1:] 점수목록 cnt = 0 for j in tmp[1:]: if j >= score_avg: cnt += 1 res = cnt/tmp[0] * 100 print(f'{res:.3f}%') 코드풀이 우선 테스트케이스의 횟수를 입력받는다. 테스트 케이스 만큼 리스트를 입력받고, 생성한다. 입력받은 리스트의 평균점수를 계산하기위해 총점수( 배열의 1번값 부터 끝까지값의 합) 를 배열의 인원수 ( 0번째..

algorithm 2021.04.05

백준 8598 - OX퀴즈

문제링크 : www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 코드 a = int(input()) for i in range(a): b = list(input()) sum = 0 score = 1 for i in b : if i == "O": sum += score score += 1 else: score = 1 print(sum) 코드해석 변수 a 에는 입력받을 문자열의 갯수를 저장한다. 변수 a 만큼 반복문을 이용해 문자열을 리스트 형태..

algorithm 2021.04.05

백준 3052 - 나머지

www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 작성코드 a = [] for _ in range(10): a.append(int(input())%42) a = set(a) print(len(a)) 코드설명 set 함수를 사용하여 중복을 제거한다. 중복을 제거한 결과의 길이를 계산해 출력 SET 함수에 대하여 -set()의 괄호 안에 리스트를 입력하여 만들거나, 다음과 같이 문자열을 입력하여 만들 수도 있다. s1 = set([1,2,3]) print(s1) # {1,2,3} s2 = set('hello') pritn(s2) # ..

algorithm 2021.04.05

프로그래머스 - 모의고사

문제설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성..

algorithm 2021.03.04

프로그래머스 - 완주하지 못한 선수

문제설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo","kiki"..

algorithm 2021.03.04

프로그래머스 - 두 개 뽑아서 더하기.

문제설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 입출력 예 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2 + 1 입니다. 4 = 1 + 3 입니다. 5 = 1 + 4 = 2 + 3 입니다. 6 = 2 + 4 입니다. 7 = 3 + 4 입니다. 따라서 [2,3,..

algorithm 2021.03.02