목록수학 (63)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/1541풀이 코드sik = input().split('-') # 마이너스를 기준으로 나누기num = []for i in sik: sum = 0 su = i.split('+') # 덧셈 계산을 위해 숫자만 뽑고 더하기 for j in su: sum += int(j) num.append(sum) # 덧셈 완료된 수들 저장n = num[0]for i in range(1,len(num)): n -= num[i] # 첫 번째 값에서 나머지 값을 모두 빼준다.print(n)코드 해석 먼저 더할 수 있는 수들을 다 더한 후,맨 앞 숫자에서 다 빼면 가장 낮을 수를 구할 수 있다. - 를 기준으로 나눈 뒤 ..
문제 링크https://www.acmicpc.net/problem/1526풀이 코드n = int(input())for i in range(int(n),0,-1): cnt = 0 for j in str(i): if j == '4' or j == '7': cnt += 1 if len(str(i)) == cnt: print(i) break코드 해석 1씩 빼며 각 자릿수가 4 혹은 7로 이루어져 있나 확인한다.만약 이루어져있으면 cnt += 1을 하고,cnt가 수의 길이와 같을 경우 출력한다. 체감 난이도: ★☆☆☆☆간만에 문제 푸는 맛이 있는 문제ㅇ다.
문제 링크https://www.acmicpc.net/problem/1057풀이 코드n, a, b = map(int, input().split())cnt = 0while a != b: a -= a // 2 b -= b // 2 cnt += 1print(cnt)코드 해석 토너먼트에서 무조건 승리한다면다음 라운드엔 현재 번호 // 2의 번호가 된다. 체감 난이도: ★★★☆☆점화식 찾기가 왜인지 모르겠는데 힘들었다.
문제 링크https://www.acmicpc.net/problem/1834풀이 코드n = int(input())sum = 0for i in range(n): sum += n * i + iprint(sum)코드 해석N * 몫 + 나머지 = 나머지와 몫이 같은 자연수N * i + i = 나머지와 몫이 같은 자연수 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/5671풀이 코드import sysinput = sys.stdin.readlinewhile 1: ho = input() if not ho: break n, m = ho.split() cnt = 0 for i in range(int(n), int(m) + 1): if len(set(str(i))) == len(str(i)): cnt += 1 print(cnt)코드 해석str로 변환 한 후 set을 써서 글자의 중복을 제거한다.그 후 숫자의 길이와 비교하여 같을 경우에 카운팅을 한다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1076풀이 코드sek = ['black', 'brown', 'red', 'orange', 'yellow', 'green', 'blue', 'violet', 'grey', 'white']a = str(sek.index(input()))b = str(sek.index(input()))c = str(10**sek.index(input()))print(int(a+b+c[1:]))코드 해석색 배열을 미리 만들어놓고그 배열의 인덱스 번호를 이용하여 계산한다. 체감 난이도: ☆☆☆☆☆
문제 링크https://www.acmicpc.net/problem/2622 풀이 코드n = int(input())cnt = 0for i in range(1, n + 1): for j in range(i, n + 1): k = n - i - j if k k: break cnt += 1print(cnt)코드 해석대한민국 국제 삼각형 만들기법제 333조 333항에 따르면,"삼각형의 가장 긴 변의 길이는 나머지 두 변의 길이의 합 보다 길면 되지 아니한다."라는 법이 존재한다. 따라서 해당 법에 따라 처리하였다.체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/17269풀이 코드al = {'A':3,'B':2,'C':1,'D':2,'E':4,'F':3,'G':1,'H':3,'I':1,'J':1,'K':3,'L':1,'M':3,'N':2,'O':1,'P':2,'Q':2,'R':2,'S':1,'T':2,'U':1,'V':1,'W':1,'X':2,'Y':2,'Z':1}n, m = map(int,input().split())a, b = input().split()new = []for i in range(min(n,m)): #['L', 'M', 'E', 'I', 'E', 'Y', 'S', 'A', 'I', 'W', 'Y', 'A', 'U', 'K', 'N', 'I'] new += a[i] + b..