목록알고리즘 (175)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/5597 풀이 코드students = [x for x in range(1,31)]for _ in range(28): a = int(input()) students.remove(a) print(min(students))print(max(students))코드 해석쉬운 난이도의 문제다.31까지의 리스트를 미리 만들고들어오는 숫자를 리스트에서 제거 하면남은 숫자들이 제출 하지 않은 숫자들이기 때문에출력하면 끝이다.
문제 링크https://www.acmicpc.net/problem/1966 풀이 코드x = int(input())for _ in range(x): n, m = map(int, input().split()) data = list(map(int, input().split())) a = 1 while(1): if data[0] 0: #순서가 0 이상이면 m -= 1 #순서 - 1 else: m = len(data) - 1 #0이라면 순서를 제일 뒤로 print(a)코드 해석if문 두개를 따로 돌려 큐 자리 옮기기와 실시간 순서 카운팅을 같이 진행하였다.
문제 링크https://www.acmicpc.net/problem/1929 풀이 코드n,m = map(int,input().split())for i in range(n,m+1): #n~m 사이의 수를 모두 검사 if i == 1: #1이라면 그냥 넘어감 continue for j in range(2,int(i**0.5)+1): #2부터 i의 제곱근까지의 수로 나눠지는지 if i % j == 0: #나눠진다면 소수가 아님 break else: print(i) #안나눠진다면 소수코드 해석"에라토스테네스의 체" 가 핵심 포인트다.즉 구하려는 수 x가 2부터 x의 제곱근까지의 수로 나눠지는지만 확인하면 소수인지 아닌지 판별이 가..
문제 링크https://www.acmicpc.net/problem/18110 풀이 코드import sysinput = sys.stdin.readlinedef round(x): if x - int(x) >= 0.5: #소수점이 0.5 이상일 때 반올림해서 리턴 return int(x) + 1 else: return int(x) #이하라면 그냥 리턴n = int(input())num = round(n*0.15) #절사평균 계산 시 제외할 값의 수level = [int(input()) for _ in range(n) ] #리스트 컴프리헨션 후 정렬level.sort()if n: #n이 참이라면 if num: #num이 참이라면 print(roun..
문제 링크https://www.acmicpc.net/problem/28702 풀이 코드for i in range(3,0,-1): # 3, 2, 1 순서로 숫자가 들어간다. a = input() if a not in ['FizzBuzz','Fizz','Buzz']: # 입력값중에 Fizz, Buzz, FizzBuzz 가 없으면 (입력값이 숫자면) dap = int(a)+i # 답 = 그 수 + 앞으로 남은 수 breakif dap % 15 == 0: # 3과 5의 배수 print('FizzBuzz')elif dap % 3 == 0: # 3의 배수 print('Fizz')elif dap % 5 == 0: # 5의 배수 print('Buzz')e..
문제 링크https://www.acmicpc.net/problem/2231 풀이 코드N = int(input()) for i in range(1, N): #생성자를 1부터 조건에 맞을때까지 카운팅 B = i + sum(map(int,str(i))) #분해합 = 생성자 + 합(생성자 각 자릿수 분해) if B == N: #분해합이 자연수와 같다면 생성자 출력 print(i) breakelse: #생성자가 없으니 0 출력 print(0)코드 해석N의 생성자를 구하기 위해N보다 작은 모든 자연수의 분해합을 하나씩 구하다분해합이 N과 같으면 그 수를 출력.
문제 링크https://www.acmicpc.net/problem/30802 풀이 코드N = int(input())size = list(map(int,input().split()))T, P = map(int,input().split())cnt = 0for i in size: if i == 0: continue elif i 코드 해석math를 사용하지 않고 풀이하였다.몫이라는 개념을 활용하면 풀이가 한결 쉬워진다.
문제 링크https://www.acmicpc.net/problem/4153 풀이 코드while(1): l = list(map(int,input().split())) if sum(l) == 0: break l.sort() if l[2]**2 == l[0]**2 + l[1]**2: print("right") else: print("wrong")코드 해석주어지는 숫자가 항상 오름차순이 아니라는 함정이 존재한다.피타고라스의 정리를 활용한다.