코딩문제풀이

Programming/Coding Problem

BOJ 2720번: 세탁소 사장 동혁

핵심 포인트 기초 구현력 제출코드 for _ in range(int(input())): cnt = {25:0, 10:0, 5:0, 1:0} N = int(input()) for key in cnt.keys(): cnt[key] = N // key N %= key print(' '.join(map(str, cnt.values()))) 해설 기초적인 구현력만 갖추셨다면 쉽게 풀 수 있는 문제입니다. 먼저, 테스트 케이스의 개수를 입력받습니다. 다음으로 cnt 변수를 초기화해줍니다. cnt 변수는 각 동전 (25, 10, 5, 1)의 개수를 의미합니다. 그러면 cnt의 각 key 값을 순회하면서 가장 큰 동전부터 시작해서 잔돈 N을 나눈 몫을 계산한 뒤 해당 동전 (key)에 해당하는 value를 채워줍니다...

Programming/Coding Problem

BOJ 11005번: 진법 변환 2

핵심 포인트 진법 변환 제출코드 N, B = map(int, input().split()) num = [] while N !=0: if N % B >= 10: num.append(chr(N % B + 55)) else: num.append(N % B) N //= B print(''.join(map(str, reversed(num)))) 해설 BOJ 2745: 진법 변환과 유사한 문제로 10진법의 숫자를 주어진 진법으로 변환하여 숫자를 출력하는 문제입니다. 이를 위해서는 주어진 진법으로 십진법의 수를 나누었을 때 나머지값을 이용하면 됩니다. 이때, 10보다 크거나 같은 값이 나오면 A ~ Z로 변환해주기 위해서 아스키코드 표를 참조하였습니다. 추가적으로 진법 변환 시 자리수의 순서는 나눌 때의 반대가 되어..

Programming/Coding Problem

BOJ 2745번: 진법 변환

핵심 포인트 진법 변환 제출코드 N, B = input().split() dec = 0 for digit, n in enumerate(N): if ord(n) >= 65: dec += (ord(n) - 55) * (int(B) ** (len(N) - digit - 1)) else: dec += int(n) * (int(B) ** (len(N) - digit - 1)) print(dec) 해설 이 문제를 풀기 위해서는 진법 변환의 개념을 알고 있어야합니다. 가장 간단한 이진법을 생각해보죠. 1001이라는 이진법 수가 들어왔을 때 이를 10진법으로 변환하는 방법은 다음과 같습니다. $$1 \times 2^{3} + 0 \times 2^{2} + 0 \times 2^{1} + 1 \times 2^{0} = 9..

Programming/Coding Problem

BOJ 2563번: 색종이

핵심 포인트 2차원 배열 2차원 리스트에서의 sum 함수 제출코드 A = [[0 for _ in range(100)] for _ in range(100)] for _ in range(int(input())): x, y = map(int, input().split()) for idxx in range(x, x + 10 if x + 10 < 100 else 100): for idxy in range(y, y + 10 if y + 10 < 100 else 100): A[idxx][idxy] = 1 print(sum(sum(A, []))) 해설 먼저, 문제에서 정의한 100 x 100 크기의 비어있는 도화지를 정의해줍니다. 이를 A라고 하고 0으로 채우도록 하죠. 그리고 총 N번 반복하면서 10 x 10 크기의..

Programming/Coding Problem

BOJ 10798번: 세로읽기

핵심 포인트 2차원 배열 리스트 pop 함수 기추 구현 능력 제출코드 A = [input() for _ in range(5)] S = [] while len(A) != 0: S.append(A[0][0]) if len(A[0]) > 1: A.append(A[0][1:]) A.pop(0) print(''.join(map(str, S))) 해설 먼저, 세로로 읽을 5개의 문자열을 하나의 리스트에 저장해놓습니다. 제가 생각한 알고리즘은 다음과 같습니다. STEP1. A의 첫번째 문자열의 첫번째 문자를 S에 저장 STEP2-1. 만약, A의 첫번째 문자열의 길이가 1보다 크다면 첫번째 문자를 제외한 문자열을 A에 append하여 마지막 요소로 추가 STEP2-2. 만약, A의 첫번재 문자열의 길이가 1보다 작다..

Programming/Coding Problem

BOJ 2566번: 최댓값

핵심 포인트 2차원 배열 리스트 컴프리헨션 최댓값 찾기 제출코드 A = [list(map(int, input().split())) for _ in range(9)] max_i, max_j, max_value = 1, 1, 0 for i in range(9): for j in range(9): if max_value < A[i][j]: max_value = A[i][j] max_i, max_j = i + 1, j + 1 print(max_value) print(max_i, max_j) 해설 먼저, $9 \times 9$ 크기의 2차원 배열을 입력받습니다. 다음에는 최대값의 위치 (max_i, max_j)와 최대값 (max_value)을 저장하기 위한 변수를 초기화합니다. 이때, 최대값의 위치는 1로 초기화..

Programming/Coding Problem

BOJ 2738번: 행렬 덧셈

핵심 포인트 2차원 배열 리스트 컴프리헨션 제출코드 N, M = map(int, input().split()) m1 = [list(map(int, input().split())) for _ in range(N)] m2 = [list(map(int, input().split())) for _ in range(N)] m3 = [[0 for _ in range(M)] for _ in range(N)] for i in range(N): for j in range(M): m3[i][j] = m1[i][j] + m2[i][j] for row in m3: print(' '.join(map(str, row))) 해설 첫번째 줄에는 두 행렬의 크기 N과 M을 입력받습니다. 다음 N개의 줄에서는 행렬 m1의 값들을 리스트..

Programming/Coding Problem

BOJ 25206번: 너의 평점은

핵심 포인트 문자열 split() 조건문 기초 구현능력 제출코드 sum, total_credit = 0, 0 for _ in range(20): _, credit, grade = input().split() if grade == 'P': continue elif grade == 'A+': sum += float(credit) * 4.5 elif grade == 'A0': sum += float(credit) * 4.0 elif grade == 'B+': sum += float(credit) * 3.5 elif grade == 'B0': sum += float(credit) * 3.0 elif grade == 'C+': sum += float(credit) * 2.5 elif grade == 'C0': s..

Johns Hohns
'코딩문제풀이' 태그의 글 목록 (4 Page)