Carpe diem

NLP 관련 석사 과정 재학 중 (2022.03 ~ )

Coding Test/Baekjoon 6

이진수 변환

[문제] 자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오. · 제한사항 1. 자연수 N은 1이상, 100,000,000,000,000이하이다. 2. N을 이진수로 바꿔서 출력하며, 이진수는 0으로 시작하면 안된다. · 입출력 예 N return 53 110101 [풀이] 1. Me n = int(input()) def binary(num: int) -> str: print(bin(num)[2:]) binary(n) bin 메소드를 사용하여 입력받은 수를 이진수로 변환하고, 이진수로 변환할 경우 앞에 '0b'가 붙기 때문에 리스트 슬라이싱을 이용하여 '0b'를 제거하였다. 이 문제 출제의 요점인 재귀함수 호출을 통해 다른 방법으로 풀어볼 수 있을 것 같다.

팩토리얼

[문제] 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. · 제한사항 1. 정수 N은 0보다 크거나 같고 12보다 작거나 같다. · 입출력 예 N return 10 3628800 0 1 [풀이] 1. Me n = int(input()) def factorial(n: int) -> int: if n == 1: return 1 elif n == 0: return 1 else: return n * factorial(n-1) print(factorial(n)) 일반적인 팩토리얼 풀이법을 사용하여 문제를 풀었다. 재귀함수 호출을 통해 팩토리얼을 계산하고, n이 1 또는 0일 경우 1을 반환한다.

Hashing

[문제] APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정의한다. 해시 함수는 무궁무진한 응용 분야를 갖는데, 대표적으로 자료의 저장과 탐색에 쓰인다. 이 문제에서는 여러분이 앞으로 유용하게 쓸 수 있는 해시 함수를 하나 가르쳐주고자 한다. 먼저, 편의상 입력으로 들어오는 문자열에는 영문 소문자(a, b, ..., z)로만 구성되어있다고 가정하자. 영어에는 총 26개의 알파벳이 존재하므로 a에는 1, b에는 2, c에는 3, ..., z에는 26으로 고유한 번호를 부여할 수 있다. 결과적으로 우리는 하나의 문자열을 수열로 변환할 수 있다. 예를 들어서 문자열 "abb..

바이러스

[문제] 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어, 7대의 컴퓨터가 그림과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크 상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 ..

진법 변환

[문제] B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 · 입출력 예 num bin return ZZZZZ 36 60466175 [풀이] 1. Me def get_num(num: str) -> int: if num.isnumeric(): return int(num) elif 'A' 10으로 표현하기 위해 55를 빼주었다. 이후 진법 계산법에 따라 값을 계산하면 완료 ! * elif 조건문으로 num이 'A' ~ 'Z' 사이에 있는지 검사하지 않으면 문제 통과를 못함