Baekjoon

BOJ

[백준/BOJ] python 15552번 빠른 A+B

언어: python 번호: 15552 제목: 빠른 A+B 등급: 브론즈 4 ​ ​ 풀이 과정: 테스트 케이스 개수 t와 두 정수 a, b를 입력받아 합을 출력한다. 빠른 A+B이기 때문에 input 함수가 아닌 readlin 함수를 사용해야 한다. ​ ​ 코드: # 15552 import sys t = int(sys.stdin.readline()) for i in range(t): a, b = map(int, sys.stdin.readline().rstrip().split()) print(a+b) ​ 메모: readline 함수를 처음 사용해 봤다. ① prompt message를 받아 출력하는 기능이 없어서 ② 값을 따로 입력받지 않고 한 줄을 한 번에 입력받는다. 이 두 가지 이유로 input()보다..

BOJ

[백준/BOJ] python 2309번 일곱 난쟁이

언어: python 번호: 2309 제목: 일곱 난쟁이 등급: 브론즈 1 ​ ​ 풀이 과정: 난쟁이 9명의 키를 입력받는다. 그중 두 명의 키가 키의 합 - 100임을 이용해 이중 for 문으로 구한다. ​ ​ 코드: # 2309 lst = [] for _ in range(9): n = int(input()) lst.append(n) s = sum(lst) - 100 for i in lst: for j in lst: if i != j and i + j == s: lst.remove(i) lst.remove(j) lst.sort() print(*lst, sep="\n") exit() 메모: 알 수 없는 오류가 계속 뜬다. 다른 방식으로 풀었지만, 아직 해결은 못해서 질문해야겠다.

BOJ

[백준/BOJ] python 2231번 분해합

언어: python 번호: 2331 제목: 분해합 등급: 실버 4 ​ ​ 풀이 과정: 분해합 N으로 자연수 M을 거꾸로 구할 수는 없다. 자연수 1부터 M까지의 분해합을 모두 구하면서 가장 작은 자연수를 찾아야 한다. 이때 1부터 M까지의 분해합을 차례대로 구하니까 처음 구한 자연수 M을 출력하면 된다. ​ ​ 코드: # 2231 n = int(input()) result = 0 for i in range(n+1): m = i + sum(list(map(int, str(i)))) if n == m: print(i) break if n == i: print(0) ​ 메모: 리스트의 자료형을 한 번에 바꿀 때도 map 함수를 사용한다.

BOJ

[백준/BOJ] python 1343번 폴리오미노

언어: python 번호: 1343 제목: 폴리오미노 등급: 실버 5 ​ 풀이 과정: 사전 순으로 가장 앞서는 답을 출력한다고 했으니 최대한 "AAAA"로 덮어야 한다. "XXXX"를 "AAAA"로 바꾸고, 남은 "XX"는 "BB"로 바꾼다. "X"의 개수가 홀수여서 남으면 폴리오미노로 덮을 수 없으니 -1을 출력한다. ​ ​ 코드: # 1343 s = input() s = s.replace("XXXX", "AAAA") s= s.replace("XX", "BB") if "X" in s: print(-1) else: print(s) ​ 메모: 처음에는 문자열의 수를 세서 for 문을 돌면서 바꾸려 했는데 잘 안돼서 함수를 찾아보다가 replace가 생각났다. 파이썬은 정말 안될 거 같은 걸 쉽게 해준다....

BOJ

[백준/BOJ] python 9506번 약수들의 합

언어: python 번호: 9506 제목: 약수들의 합 등급: 브론즈 1 ​ 풀이 과정: 숫자 n을 입력받아 -1일 경우에는 멈추고, 아니면 계속 입력을 받는다. n의 약수가 들어있는 리스트로 만들어 리스트의 합과 n이 같을 경우 약수들의 합으로 나타내어 출력하고, 아니면 n is NOT perfect.를 출력한다. n의 약수를 구할때 모든 약수로 n을 나누면 짝이 나온다. 예를 들어 18의 약수는 (2, 9), (3, 6)이 짝이라 할 수 있다. 따라서 1부터 sqrt(n)까지의 약수와 그 짝을 구하면 된다. ​ ​ 코드: # 9506 b while 1: lst = [] n = int(input()) if n == -1: break for i in range(2, int(n**0.5)+1): if n%..

BOJ

[백준/BOJ] python 8958번 OX퀴즈

언어: python 번호: 8958 제목: OX퀴즈 등급: 브론즈 2 ​ 풀이 과정: 테스트 케이스의 개수 t를 입력받는다. 각 테스트 케이스의 문자열은 O와 X만으로 이루어져 있으니 문자열을 'X'를 기준으로 자른다. 자른 문자열에 O가 n개씩 묶여있을때 1부터 n까지의 합의 점수를 얻는다. 즉 n(n+1)/2의 점수를 얻는다. 따라서 for문을 돌면서 자른 문자열의 길이(자른 문자열의 길이+1)/2의 합을 구해 출력한다. ​ ​ 코드:​ # 8958 n = int(input()) for _ in range(n): result = 0 s = input() for i in s.split('X'): result += len(i)*(len(i)+1)//2 print(result) ​ 메모: 파이썬의 내장 함..

BOJ

[백준/BOJ] python 1904번 01타일

언어: python 번호: 1904 제목: 01타일 등급: 실버 3 ​ 풀이: N=1 > 1 N=2 > 00, 11 N=3 > 100, 001, 111 N=4 > 0000, 0011, 1001, 1100, 1111 N=5 > 10000, 00100, 11100, 00001, 00111, 10011, 11001, 11111 N=i일때 N=i-1일 때와 N=i-2일때를 보면 규칙을 찾을 수 있다. N=i일때 N=i+1인 2진 수열을 만드려면, 앞에서 만든 2진 수열에 1을 붙이거나, 1을 떼고 00을 붙여야 한다. 이때 N-1인 수열의 뒤에 1을 붙이고, N-2인 수열 뒤에 00을 붙이면 중복 없이 새로운 2진 수열을 만들 수 있다. 길이가 N인 모든 2진 수열의 개수는 N번째 피보나치 수와 같다. ​ ​ ..

BOJ

[백준/BOJ] python 1010번 다리 놓기

언어: python 번호: 1010 제목: 다리 놓기 등급: 실버 5 ​ 풀이 과정: 테스트 케이스 t를 입력받아 for 문으로 출력을 t 번 반복한다. 강의 서쪽과 동쪽에 있는 사이트의 개수 n, m을 입력받는다. n 개와 m 개의 점을 연결하는 것과 같으니 이는 조합이라 할 수 있다. 조합을 구하기 위해 math 함수를 이용할 수 있지만 나는 함수 없이 구현해 보았다. n과 m 이 같은 경우, n이 1인 경우로 나누어 계산했다. ​ ​ 코드: # 1010 t = int(input()) for i in range(t): result = 1 n, m = map(int, input().split()) if n==m: print(1) continue elif n==1: print(m) continue for..

kyj0015
'Baekjoon' 태그의 글 목록 (2 Page)