BOJ / Python / 🥉3 / 2903번 / 중앙 이동 알고리즘 # 첫째 줄에 N이 주어진다. N = int(input()) """ N = 0 점 개수 = 4 (2^2) N = 1 점 개수 = 9 (3^2) N = 2 점 개수 = 25 (5^2) N = 3 점 개수 = 81 (9^2) N = 4 점 개수 = 289 (17^2) N = (2^N + 1)^2 """ # 첫째 줄에 과정을 N번 거친 후 점의 수를 출력한다. print((2**N + 1) ** 2) Algorithm/BAEKJOON 2023.05.30
BOJ / Python / 🥈5 / 2720번 / 세탁소 사장 동혁 # 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T = int(input()) for _ in range(T): # 각 테스트 케이스는 거스름돈 C를 나타내는 정수 하나로 이루어져 있다. C = int(input()) # 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01) for i in [25, 10, 5, 1]: # 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. print(C // i, end=' ') C = C % i Algorithm/BAEKJOON 2023.05.28
BOJ / Python / 🥈5 / 25206번 / 너의 평점은 rating = {"A+": 4.5, "A0": 4.0, "B+": 3.5, "B0": 3.0, "C+": 2.5, "C0": 2.0, "D+": 1.5, "D0": 1.0, "F": 0.0} rate = 0 scoreSum = 0 for _ in range(20): # 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다. subject, score, grade = input().split() # P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다. if grade == "P": continue rate += float(score) * rating[grade] scoreSum += float(score) # 치훈이의 전공평.. Algorithm/BAEKJOON 2023.05.26
BOJ / Python / 🥈5 / 1316번 / 그룹 단어 체커 # 첫째 줄에 단어의 개수 N이 들어온다. N = int(input()) # 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. group_word = N for _ in range(N): word = input() for i in range(len(word)-1): # 그룹 단어인 경우 if word[i] == word[i+1]: continue # 그룹 단어가 아닌 경우 elif word[i] in word[i+1:]: group_word -= 1 break # 첫째 줄에 그룹 단어의 개수를 출력한다. print(group_word) Algorithm/BAEKJOON 2023.05.25
BOJ / Python / 🥈5 / 2941번 / 크로아티아 알파벳 # 크로아티아 알파벳 croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] # 첫째 줄에 최대 100글자의 단어가 주어진다. word = input() for i in croatia: word = word.replace(i, '*') # 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. print(len(word)) Algorithm/BAEKJOON 2023.05.24
BOJ / Python / 🥉1 / 10798번 / 세로읽기 # 총 다섯줄의 입력이 주어진다. words = [input() for i in range(5)] # 세로로 읽을 때, 각 단어의 첫 번째 글자들을 위에서 아래로 세로로 읽는다. # 다음에 두 번째 글자들을 세로로 읽는다. # 이런 식으로 왼쪽에서 오른쪽으로 한 자리씩 이동 하면서 동일한 자리의 글자들을 세로로 읽어 나간다. # 세로로 읽을 때 해당 자리의 글자가 없으면, 읽지 않고 그 다음 글자를 계속 읽는다. for i in range(15): for j in range(5): if i < len(words[j]): # 영석이가 세로로 읽은 순서대로 글자들을 출력한다. print(words[j][i], end='') Algorithm/BAEKJOON 2023.05.22
BOJ / Python / 🥉3 / 2566번 / 최댓값 # 첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. table = [list(map(int, input().split())) for _ in range(9)] max_num = 0 max_row = 0 max_col = 0 for row in range(9): for col in range(9): if max_num Algorithm/BAEKJOON 2023.05.22
BOJ / Python / 🥉5 / 2738번 / 행렬 덧셈 # N*M 크기의 두 행렬 A와 B A, B = [], [] # 첫째 줄에 행렬의 크기 N 과 M이 주어진다. N, M = map(int, input().split()) # 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. for row in range(N): row = list(map(int, input().split())) A.append(row) # 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. for row in range(N): row = list(map(int, input().split())) B.append(row) # 첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. for row in range(N): for col in range(M): .. Algorithm/BAEKJOON 2023.05.22
BOJ / Python / 🥉1 / 1157번 / 단어 공부 # 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. word = input().upper() # 중복된 문자 값 제거 word_list = list(set(word)) # 빈 리스트 생성 cnt = [] # count 함수를 통해 입력받은 문자열 내 알파벳 개수를 빈 리스트에 입력 for i in word_list: count = word.count(i) cnt.append(count) # 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. # 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. if cnt.count(max(cnt)) > 1: print("?") else: print(word_list[(cnt.index(max(cnt)))]) Algorithm/BAEKJOON 2023.05.22
BOJ / Python / 🥉2 / 5622번 / 다이얼 # 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. alphabet = input() dial_list = {'ABC': 3, 'DEF': 4, 'GHI': 5, 'JKL': 6, 'MNO': 7, 'PQRS': 8, 'TUV': 9, 'WXYZ': 10} time = 0 for i in range(len(alphabet)): for j in dial_list.keys(): if alphabet[i] in j: time += dial_list[j] # 첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다. print(time) Algorithm/BAEKJOON 2023.05.20