GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이 228

Baekjoon Online Judge 11576번 파이썬

문제 링크 https://www.acmicpc.net/problem/11576 11576번: Base Conversion 타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 www.acmicpc.net 처음에 문제를 이해하기 어려워서 몇번씩 문제를 읽었다. 예제 입력의 ‘2 16’을 216으로 생각하고 풀었는데 도저히 예제 결과와 같이 나오지 않았다. 알고 보니 2*(17**1)+16*(17**0)으로 풀어야하는 것이었다. for i in range(m): Ato10 += number[i] * (A**i) 으로 A진수를 10진수로 바꾸었다. 정답 코드 import s..

Baekjoon Online Judge 1373번 파이썬

문제 링크 https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 잘못 짠 코드 import sys N_2 = sys.stdin.readline() N_10 = int(N_2, 2) N_8 = '' while N_10 != 0: N_8 += str(N_10 % 8) N_10 = N_10 // 8 print(N_8[::-1]) 이렇게 짜니 시간 초과가 나왔다. 알고보니 oct()라는 8진수로 바꾸어주는 함수가 있어서 이를 활용했다. 정답 코드 import sys print(oct(int(sys.stdin.readline(), 2))[2:])

Baekjoon Online Judge 2745번 파이썬

문제 링크 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net int(‘문자’,숫자) 로 해야하기 때문에 N과 B를 문자로 받고 이후에 B를 정수로 바꿔주었다. int(N,B) -> B진수인 N을 10진수로 나타내주세요. 정답 코드 import sys N, B = sys.stdin.readline().split() print(int(N, int(B)))

Baekjoon Online Judge 11005번 파이썬

문제 링크 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net N을 더이상 나눌 수 없을 때까지 36으로 나누고 거기서 나온 나머지를 바꿀 진법의 수(문자)로 바꾸었다. 그대로 출력하면 거꾸로 나오기 때문에 순서를 뒤집어서 출력해주어야 제대로 나온다. 정답 코드 import sys tmp = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" N, B = map(int, sys.stdin.readline().split()) ..

Baekjoon Online Judge 9613번 파이썬

문제 링크 https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net for j in range(1,N+1): for k in range(j+1, N+1): 이것을 이용해 가능한 모든 쌍의 조합을 찾았다. 정답 코드 import sys import math T = int(sys.stdin.readline()) for i in range(T): result = 0 numbers= list(map(int, sys.stdin.readli..

Baekjoon Online Judge 1158번 파이썬

문제 링크 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net K가 3이란 뜻은 3번째 사람마다 죽여야한다는 의미다. 이를 위해서는 주기가 2가 되어야한다. 그래서 사람 한 명을 죽일 때마다 ‘없애야하는 인덱스’를 2씩 더해주어야한다. 하지만 없애야하는 인덱스보다 남은 사람 수가 적다면 문제가 생긴다. ‘2씩 더한 결과로 생기는 없애야하는 인덱스’와 ‘파란색으로 표시한 요세푸스 순열의 규칙에 따른 없애야하는 인덱스’를 비교해보면, (남은 사람 수 % 2씩 더한 결과로 생기는 없애야하는 인덱스 = 파란색으로 표시한 없애야하는 인덱스)가 된다..

Baekjoon Online Judge 1406번 파이썬

문제 링크 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 처음에 잘못 짠 코드 import sys string = list(sys.stdin.readline().rstrip()) M = int(sys.stdin.readline().rstrip()) N = len(string) cursor = len(string) for i in range(M): command = list(sys.stdin.readline().split()) if command..

Baekjoon Online Judge 11656번 파이썬

문제 링크 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 문자열의 인덱싱을 이용해서 접미사를 찾았고 sorted()를 이용해서 사전순 정렬하였다. 정답 코드 import sys string = sys.stdin.readline().rstrip() suffix = [] for i in range(len(string)): suffix.append(string[i:len(string)]) suffix = sorted(suffix) for i in range(len(string)): print(suffix[i])

728x90