백준 48

[백준] 2908. 상수

2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 이 문제는 두 수를 입력받으면 거꾸로 저장한 후 크기가 큰 쪽을 출력하는 문제였다. 파이썬 내장함수를 사용해서 문자열로 바꿔서 풀 수 있지만, 이번엔 10으로 나눠줘서 자리수를 구하고, 구한 자리수에 다시 10을 곱해 바꿔보았다. # 2908 상수 # 두 수를 입력받으면 거꾸로 읽은 후 크기가 큰 쪽을 답하는 상수의 대답을 출력해보자! # 파이썬 내장함수를 사용해서 문자열로 바꿔서 풀 수 있지만, # 이번엔 10으로 나눠줘서 자리수를 구하고, 구한 자리수에 다시 10을 곱해..

[백준] 1152. 단어의 개수

1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 파이썬의 split() 함수와 len() 함수, 두 가지만 알고 있으면 단 두 줄만으로 쉽게 풀 수 있는 문제이다. # 1152 단어의 개수 word = list(input().split()) print(len(word))

[백준] 1157. 단어 공부

1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 이 문제는 알파벳 대문자와 소문자 아스키 코드를 모두 활용해야 하는 문제였다. 이 부분만 알고 푼다면, 저번에 푼 10809번 알파벳 찾기 문제와 비슷하게 풀 수 있었다. #1157 단어 공부 # 우선, 대문자 A의 아스키코드는 65, 소문자 a의 아스키코드는 97이다. # 즉 대문자 아스키코드에 32를 더해주면 소문자가 되는 것이다. # 대, 소문자 상관 없이 가장 많이 사용되는 알파벳이므로 # 알파벳 언급 횟수를 셀 배열은 26개의 공간을 가진 한개의 리스트만 있으면 충분하다. arr = [..

[백준] 2675. 문자열 반복

2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 파이썬 문자열에 +, -, * 같은 연산자가 사용 가능하다는 것만 안다면 어렵지 않게 풀 수 있는 문제였다. # 2675 문자열 반복 T = int(input()) for tc in range(1, T+1): num, word = input().split() num = int(num) P = '' for w in word: P += w * num print(P) P라는 문자열이 들어갈 변수를 생성하지 않고, 바로 반복문에서 그때그때 출력도 가능하다. 단..

[백준] 10809. 알파벳 찾기

10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net # 10809 알파벳 찾기 # 우선 알파벳 개수 만큼 -1을 채워 넣은 리스트를 만든다.(알파벳은 26개) # 이렇게 하면 -1이 아닌 숫자들은 자릿수가 채워진 것이고, 한번도 등장하지 않은 알파벳의 자리수는 -1로 남아있다. arr = [-1 for _ in range(26)] # 아스키 코드로 a는 97, z는 122이다. # 그래서 word를 반복문을 돌리며 해당 알파벳을 ord()를 사용해 아스키 숫자로 바꾼 후, # 거기서 97을 뺀 인덱스 ..

[백준] 11720. 숫자의 합

11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net # 11720 숫자의 합 N = int(input()) word = input() sum = 0 for i in word: sum += int(i) print(sum) 사용 언어가 파이썬이라 나는 잘 몰랐는데, java나 C로 푼 사람들의 해답을 보니 긴 문자열이 들어왔을 때 정수로 바꾸는 처리가 조금 까다로운 것 같다. 나중에 js로 알고리즘 풀게 되면 한번 확인해봐야 할 듯.

[백준] 11654. 아스키 코드

11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 이 문제는 파이썬 내장 함수를 알면 간단히 풀리는 문제이다. 파이썬에서 ASCII 코드를 숫자로 바꾸는 함수는 ord(), 역으로 숫자를 ASCII 코드로 바꾸는 함수는 chr()이다. # 11654 아스키 코드 # 파이썬에서 ASCII -> 숫자는 ord(), 숫자 -> ASCII는 chr() 함수를 사용한다! print(ord(input()))

[백준] 1065. 한수

1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 이 문제는 등차수열에 대해 다시 복습하고 푸니까 훨씬 잘 풀렸다. 우선 나는 이 문제를 한수인지 판별하는 함수를 만들어 카운트를 세는 방법으로 구현했다. 문제의 '한수 판별 함수'의 경우 3가지 포인트에 유의하며 접근했다. 포인트 1. 숫자가 1개만 있는 것도 수열이 성립한다(예: 1, 2, 3, 4...8, 9). 'an = a1 + (n-1)d' 이 식에 n=1을 대입해보면 성립한다는 것을 확인할 수 있다. 포인트 2. 10

[백준] 4673. 셀프 넘버

4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net '생성자가 없는 셀프 함수를 찾아라'가 문제였기 때문에, 1부터 10000까지 숫자 중 생성자가 있는 수를 찾아서 중복을 허용하지 않는 set 자료형에 넣어두고, 다시 반복문을 돌리며 1부터 10000까지 숫자 중 해당 set에 포함되지 않은 숫자를 찾는 방법으로 풀었다. 평소라면 자리수를 세기 위해 파이썬 내장 함수 str()을 이용해 숫자를 문자로 바꿔서 했을 테지만, 왠지 수학으로 접근해서 푸는 방법이 있을..

[백준] 15596. 정수 n개의 합

15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 처음에 문제만 보고, return 값을 출력해줘야 하는 줄 알고 함수 말고 출력하는 식도 코딩했는데 나중에 확인해보니 제출하기를 눌러서 사전에 작성된 함수 포맷만 채우면 되는 것이었다...! n개 정수의 합을 구하는 방법을 나는 간단하게 ans에 계속 더해주는 식으로 함수를 구현했다. 비교적 간단했던 문제. (내가 삽질만 안 했더라면 말이다..) # 15596 정수 n개의 합 d..