목록solved.ac (10)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/10989 풀이 코드import sysinput = sys.stdin.readline #입력받는 시간을 단축시켜준다.n = int(input())arr = [0] * 10001 #미리 배열을 만들어준다.for _ in range(n): arr[int(input())] += 1 #받은 숫자를 인덱스번호로 하는 자리를 += 1 해준다.for i in range(len(arr)): if arr[i] != 0: #숫자가 0이 아니면(숫자가 들어온 적 있다면) for _ in range(arr[i]): print(i) #들어온 갯수만큼 그 숫자를 출력한다.코드 해석실행 시간을 줄이는것이 ..
문제 링크https://www.acmicpc.net/problem/15829/ 풀이 코드L = int(input())mun = input()sum = 0for i in range(L): #for문으로 L만큼 반복 sum += (ord(mun[i]) - 96) * (31**i) #ord를 사용하여 알파벳을 아스키코드로 변환하고 - 96을 하여 a가 1이 되게 한다.print(sum % 1234567891)코드 해석생각보다 간단하다.ord는 아스키코드를 이용하여 알파벳을 숫자로 변환시켜준다.a 가 97 부터 시작이기때문에 -96을 하여 알파벳의 시작점을 1로 만들어준다.그 후에 나와있는 공식을 그대로 코드에 적용시켜주면 된다.
문제 링크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")코드 해석주어지는 숫자가 항상 오름차순이 아니라는 함정이 존재한다.피타고라스의 정리를 활용한다.
문제 링크 https://www.acmicpc.net/problem/14912 14912번: 숫자 빈도수 자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다. www.acmicpc.net 풀이 코드 n,m = map(int,input().split()) a = '' for i in range(1, n+1): a = a + str(i) print(a.count(str(m))) 코드 해석 수를 문자열로 길게 나열한다. ex) 12345678910111213 이후 문자열에서 count를 사용하여 m의 개수를 출력한다.
문제 링크 https://www.acmicpc.net/problem/14582 14582번: 오늘도 졌다 첫 번째 줄에는 9개의 정수가 주어지는데, 오늘 경기에서 울림 제미니스가 1회 초, 2회 초, ..., 9회 초에 낸 득점이 주어진다. 두 번째 줄에도 9개의 정수가 주어지는데, 스타트링크 걸리버스가 1회 www.acmicpc.net 풀이 코드 a = list(map(int, input().split())) b = list(map(int, input().split())) asum, bsum = 0, 0 cnt = 0 for i in range(9): asum += a[i] if asum > bsum and cnt == 0: cnt += 1 if asum < bsum and cnt == 1: cnt +..
문제 링크 https://www.acmicpc.net/problem/16212 16212번: 정열적인 정렬 형준이는 수열을 하나 가지고 있다. 형준이는 수열을 정열적으로 정렬해보려 한다. 과연, 정렬할 수 있을까? www.acmicpc.net 풀이 코드 n = int(input()) m = list(map(int,input().split())) m.sort() print(*m) 코드 해석 수열을 받아서 띄어쓰기로 구분하여 리스트 형식으로 저장한다. 그 후 정렬을 하고 출력한다.