목록알고리즘 (193)
홍우진의 개발 일기장
문제 링크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/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 풀이 코드 import sys while True: line = sys.stdin.readline().rstrip('\n') if not line: break l, u, d, s = 0, 0, 0, 0 for each in line: if each.islower(): l += 1 elif each.isupper(): u += 1 elif each.isdigit(): d += 1 el..
문제 링크 https://www.acmicpc.net/problem/2864 2864번: 5와 6의 차이 첫째 줄에 두 정수 A와 B가 주어진다. (1
문제 링크 https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 풀이 코드 n = int(input()) player_list = [] result = [] for _ in range(n): a = input() player_list.append(a[0]) first_names = set(player_list) for i in first_names: if player_list.count(i) >= 5: result.append(i) if len(result..
문제 링크 https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 풀이 코드 c = [] for _ in range(8): c.append(list(map(str, list(input())))) n = 0 for i in range(8): for j in range(8): if (i + j) % 2 == 0: if c[i][j] == 'F': n += 1 print(n) 코드 해석 체스판을 이중 for문으로 탐색한다. 만약 탐색중인 좌표가 하얀칸이고..