백준

    [python] 백준 11816번: 8진수, 10진수, 16진수

    11816번: 8진수, 10진수, 16진수 (acmicpc.net) 11816번: 8진수, 10진수, 16진수 첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다. www.acmicpc.net 접근 방법 혹시 파이썬으로 진법 변환을 해주는 내장 함수가 있는지 먼저 구글링 해보니, int() 내장 함수가 생각보다 강력한 기능을 가지고 있었다. 이를 활용하면 바로 풀 푸 있겠다고 판단했다. 일단, 문제에서 8진수인 경우에는 수의 앞에 0이 주어지고, 16진수인 경우에는 0x가 주어진다. 라고 정의했기 때문에 초기 입력값을 배열에 한 문자 단위로 잘라 넣어서 첫 번째, 두 번째 원소를 if문으로 검증하여 몇 진..

    [python] 백준 11720: 숫자의 합

    11720번: 숫자의 합 (acmicpc.net) 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 접근 방법 문제를 보자마자 떠오른 해답은 반복문으로 배열의 원소를 하나씩 꺼내며 더해주는 것이었는데, 이는 가독성이 떨어지기 때문에 pythonic 하게 문제를 풀어보았다. 코드 N = int(input()) # 일단 문자열로 더할 값들을 받음 elem = str(input()) # map 함수를 활용해 elem 문자열을 한 글자 단위로 나눠 리스트에 저장 elem = list(map(int, str(elem))) # sum 함수로 배열 내 모든 원소를 더한 결과 출력 print(sum(elem))

    [python] 백준 11653: 소인수분해

    11653번: 소인수분해 (acmicpc.net) 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net N = int(input()) if N == 1: print() # N이 1이라면 아무것도 출력하지 않는다. for i in range(2, N+1): # 소인수분해는 정수를 2로 나누기 시작. if N % i == 0: # 처음에 정수를 2로 나눴을 때 나머지가 0이라면, while N % i == 0: # i로 나눴을 때 0이 될 때까지 반복 print(i) # 그 값이 소인수이므로, 출력 N = N // i # 이어서 정수를 i로 다시 나눔.