[Python] 알고리즘/Silver
-
[6616] 문자열 암호화 (Python)[Python] 알고리즘/Silver 2021. 11. 29. 11:55
[문제] https://www.acmicpc.net/problem/6616 6616번: 문자열 암호화 남들이 멋대로 정보를 읽을 수 없도록 하기 위하여, 많은 사람들은 암호화 알고리즘을 이용해 암호화를 하게 됩니다. 이런 암호화 방법을 사용하여 평문(message)를 암호문(ciphertext)로 바꾸게 되 www.acmicpc.net 알고리즘 분류는 구현, 문자열 입니다. 2 ABCDEFGH 결과 : AEBFCGDH [코드] import sys while True: N = int(sys.stdin.readline()) if N == 0: break text = "".join(sys.stdin.readline().rstrip().split()).upper() dt = dict() i = 0 m = 0 c..
-
[1706] 크로스워드 (Python)[Python] 알고리즘/Silver 2021. 11. 25. 18:50
[문제] https://www.acmicpc.net/problem/1706 1706번: 크로스워드 동혁이는 크로스워드 퍼즐을 좋아한다. R×C 크기의 크로스워드 퍼즐을 생각해 보자. 이 퍼즐은 R×C 크기의 표로 이루어지는데, 퍼즐을 다 풀면 금지된 칸을 제외하고는 각 칸에 알파벳이 하나씩 www.acmicpc.net 알고리즘 분류는 구현, 문자열, 정렬, 파싱 입니다. 행과 열을 바꿀 때, zip 함수를 사용하였습니다. [코드] import sys R, C = map(int, sys.stdin.readline().split()) li = list() for i in range(R): li.append(sys.stdin.readline().rstrip()) new_li = list(map(list, zi..
-
[14495] 피보나치 비스무리한 수열 (Python)[Python] 알고리즘/Silver 2021. 11. 23. 16:30
[문제] https://www.acmicpc.net/problem/14495 14495번: 피보나치 비스무리한 수열 피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보 www.acmicpc.net 알고리즘 분류는 다이나믹 프로그래밍 입니다. 1, 1, 1, 2, 3, 4, 6, 9, ... 이 곳에서 점화식을 찾아서 풀어야 합니다. [코드] import sys fibo = [1, 1, 1] for i in range(117): fibo.append(fibo[i] + fibo[i + 2]..
-
[11508] 2+1 세일 (Python)[Python] 알고리즘/Silver 2021. 11. 22. 19:50
[문제] https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 알고리즘 분류는 그리디 알고리즘, 정렬 입니다. 정렬을 한 후, 문제의 조건을 따르면 되는 문제입니다. [코드] import sys N = int(sys.stdin.readline()) li = list() for i in range(N): li.append(int(sys.stdin.readline())) li.sort(reverse=True) res = 0 cnt = 0 fo..
-
[1120] 문자열 (Python)[Python] 알고리즘/Silver 2021. 11. 21. 15:06
[문제] https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 알고리즘 분류는 구현, 문자열, 브루트포스 알고리즘 입니다. 문자를 직접 붙이는 것이 아닌, 한 자리씩 밀며 검사하는 것입니다. [코드] import sys A, B = sys.stdin.readline().split() res = list() for i in range(len(B) - len(A) + 1): cnt = 0 for j in range..
-
[2312] 수 복원하기 (Python)[Python] 알고리즘/Silver 2021. 11. 20. 14:04
[문제] https://www.acmicpc.net/problem/2312 2312번: 수 복원하기 첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다. www.acmicpc.net 알고리즘 분류는 수학, 정수론, 소수 판정, 에라토스테네스의 체 입니다. 파이썬의 dictionary에는 key, value 형태로 들어가므로 인수와 인수가 곱해진 수를 넣어야 합니다. [코드] import sys def prime(n): dt = dict() p = 2 while p
-
[1713] 후보 추천하기 (Python)[Python] 알고리즘/Silver 2021. 11. 19. 14:46
[문제] https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 알고리즘 분류는 구현, 시뮬레이션 입니다. 문제의 규칙에 주의해야 합니다. (숫자가 같으면 한 후보이므로, 추가를 하지 않고 추천 수만 더해야 합니다.) 규칙 이해를 돕기 위한 영상 [코드] import sys def find_key(dt, v): for key, value in dt.items(): if value == v: return key N = int(sys.stdin...
-
[1850] 최대공약수 (Python)[Python] 알고리즘/Silver 2021. 11. 18. 16:11
[문제] https://www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 알고리즘 분류는 수학, 정수론, 유클리드 호제법 입니다. 파이썬에 math 모듈에서 최대공약수를 구할 수 있습니다. [코드] import sys import math A, B = map(int, sys.stdin.readline().split()) A, B = min(A, B), max(A, B) print("1" * math.gcd(A, B))