알고리즘 공부
{프로젝트 오일러/Project Euler} 8. 이어진 수의 곱의 최댓값
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 1
{프로젝트 오일러/Project Euler} 7. 10001번째 소수
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 1
{프로젝트 오일러/Project Euler} 6. 제곱의 합과 합의 제곱의 차
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 1
{프로젝트 오일러/Project Euler} 5. 1~ N으로 나누어 떨어지는 수
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 1
{프로젝트 오일러/Project Euler} 4. 세자리 수를 곱해 만든 대칭수
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 101101 < 입력값:n < 10^7 palindrome = set() for i in range(999, 99, -1): for j in range(999, 99, -1): if (i*j) % 11 == 0: s = str(i*j) if s == s[::-1]: palindrome.add(i*j) palindrome = sorted(palindrome) for _ in range(int(input())): n = int(input()) begin, end = 0, len(palindrome)-1 while begin = n: end = mid - 1 else: begin = mid + 1 ..
{프로젝트 오일러/Project Euler} 3. 가장 큰 소인수 구하기
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 1
{프로젝트 오일러/Project Euler} 2. 짝수 피보나치 항의 합
한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다. 입력받은 수보다 작은 짝수인 피보나치 항의 합을 출력하는 문제 even_fibonacci = [2] max_limit = 4*1e16 evFi1, evFi2 = 0, 2 while True: next_evFi = 4*evFi2 + evFi1 if next_evFi >= max_limit: break evFi1, evFi2 = evFi2, next_evFi even_fibonacci.append(evFi2) for _ in range(int(input())): n = int(input()) S = filter(lambda x: x
[백준 10814번-파이썬/Python] 나이순 정렬
http://acmicpc.net/problem/10814 {코드} data = [] for _ in range(int(input())): x, y = input().split() data.append((int(x), y)) data.sort(key=lambda x: x[0]) [print(*i) for i in data] {설명} 파이썬의 정렬은 가능한 한 기존의 인덱스를 유지하는 정렬, 안정된 정렬(Stable sort)을 수행합니다. 그렇기에 단순히 나이만 키값으로 주고 정렬하면 문제가 요구하는 답을 구할 수 있습니다.
[백준 1181번-파이썬/Python] 단어 정렬
http://acmicpc.net/problem/1181 {코드} import sys def input(): return sys.stdin.readline().rstrip() def print(val): sys.stdout.write(str(val)+'\n') data = sorted({input() for _ in range(int(input()))}, key=lambda s: (len(s), s)) [print(i) for i in data] {설명} 먼저 입력받은 원소들을 집합에 넣어 중복을 없애고 문자열의 길이을 기준으로 먼저 정렬하고 길이가 같으면 문자열을 기준으로 정렬하게 된다.
[백준 11651번-파이썬/Python] 좌표 정렬하기 2
http://acmicpc.net/problem/11651 {코드} import sys def input(): return sys.stdin.readline() def print(a, b): sys.stdout.write(f'{a} {b}\n') [print(*i) for i in sorted([list(map(int, input().split())) for _ in range(int(input()))], key=lambda x: (x[1], x[0]))] {설명} 이 문제는 11651의 좌표 정렬하기와 비슷한 문제로 입력량이 많아 sys모듈을 사용하고 뒤에 key를 통해 2번째 숫자를 기준으로 정렬하되 같은 값이 있다면 첫 번째 값이 더 작은 순으로 정렬한다.