목록수학 (26)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/9506풀이 코드while 1: n = int(input()) if n == -1: break; arr = [] for i in range(1, n): if n % i == 0: arr.append(i) if sum(arr) == n: print(n, " = ", " + ".join(str(i) for i in arr), sep="") else: print(n, "is NOT perfect.")코드 해석브루트포스를 이용하여 약수를 모두 구한 뒤약수의 합이 n과 같다면 출력아니라면 is N..
문제 링크https://www.acmicpc.net/problem/2525 풀이 코드h, m = map(int, input().split())c = int(input()) h += c // 60m += c % 60if m >= 60: h += 1 m -= 60if h >= 24: h -= 24print(h,m)코드 해석나눈 시간을 60으로 나누고 몫을 시, 나머지를 분에 더한다.분이 60분을 넘으면 시에 +1, 분에 -60 시가 24시간을 넘으면 시에 -24
문제 링크https://www.acmicpc.net/problem/11005풀이 코드n, b = map(int, input().split())x = ''arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" #0~35까지의 숫자while n != 0: #n이 0이 되기 전까지 x += str(arr[n % b]) #n/b의 나머지를 arr에 있는 숫자에서 뽑아서 x에 삽입 n //= bprint(x[::-1]) #x를 거꾸로 출력코드 해석b 진법 변환은 n이 0이 되기 전까지 b로 나눈 뒤 나머지의 arr 값을 x에 저장하고몫을 또 나눈다.
문제 링크https://www.acmicpc.net/problem/1924 풀이 코드su = [1,4,4,0,2,5,0,3,6,1,4,6]week = ['SAT','SUN','MON','TUE','WED','THU','FRI']x,y = map(int,input().split())print(week[(14 + y + su[x-1]) % 7])코드 해석또 홍대병에 걸려 사람들과 다른 방식으로 해결하였다.바로 '크리스티안 헤세의 요일 공식'이다.https://blog.naver.com/yhc33758/222922768282 특정 날짜가 무슨 요일인지 계산하는 방법어느 특정 날짜의 요일을 맞출 수 있는 재미있는 이야기가 있다. 그 이야기의 주인공은 독일의 수학자 겸 ...blog.naver.com위의 블로그 ..
문제 링크https://www.acmicpc.net/problem/2745 풀이 코드n,b=input().split()print(int(n,int(b)))코드 해석int 함수를 사용하면 매우 쉬운 난이도의 문제다.엥? int 함수는 숫자형으로 반환해주는거 아닌가??아니다. 기능이 하나 더 있다.int(변환할 수, 진법) 짜잔~ 이렇게 사용하면 해당 진법으로 변환한 수가 반환된다.
문제 링크https://www.acmicpc.net/problem/2587풀이 코드a = [int(input()) for x in range(5)]a.sort()print(sum(a)//5)print(a[2])코드 해석매우 쉬운 난이도의 문제다.// 연산자를 활용하여 몫을 반환한다.\입력값이 5개로 지정되어있기 때문에 2번째 인덱스를 출력하면 중앙값이 나온다.
문제 링크 https://www.acmicpc.net/problem/2108 풀이 코드import sysinput = sys.stdin.readlinen = int(input())a = [int(input()) for x in range(n)] #리스트 컴프리헨션#산술평균print(round(sum(a)/len(a))) #중앙값a.sort() print(a[len(a)//2]) #최빈값dic = dict() #딕셔너리 생성for i in a: if i in dic: #딕셔너리에 Key, Value 추가 및 증가 dic[i] += 1 else: dic[i] = 1maxval = []for i in dic: if max(dic.val..
문제 링크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의 제곱근까지의 수로 나눠지는지만 확인하면 소수인지 아닌지 판별이 가..