목록수학 (63)
홍우진의 개발 일기장
문제 링크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의 제곱근까지의 수로 나눠지는지만 확인하면 소수인지 아닌지 판별이 가..
문제 링크 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 풀이 코드 n = int(input()) a = list(map(int, input().split())) print(max(a) * min(a)) 코드 해석 진짜 약수를 리스트로 받은 뒤 min 값과 max 값을 곱하여 n을 찾는다.
문제 링크 https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 풀이 코드 i = 0 while True: i+=1 l, p, v = map(int, input().split()) if l == 0 and p == 0 and v == 0: break a = v//p b = v%p if l
문제 링크 https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 풀이 코드 print(oct(int(input(),2))[2:]) 코드 해석 int 함수의 두번쨰 인자를 기본 진법으로 설정하고 int를 바꿀 진법으로 감싸면 된다. oct는 8진법을 의미하고 앞에 두 문자는 8진법을 나타내는 문자라 제외 후 출력한다.