알고리즘 공부/BOJ백준 풀이
[백준 1110번-파이썬/Python] 더하기 싸이클
http://acmicpc.net/problem/1110 {코드} n = k = int(input()) count = 0 while True: k = (k%10) * 10 + (k//10 + k%10) % 10 count += 1 if k == n: print(count) break {설명} 이 문제의 규칙은 다음과 같습니다. 이전 숫자를 n이라 둘때, 다음 숫자는 n의 일의 자리 수에 10을 곱하고 n의 각 자리의 합의 일의 자리 수를 더한다 이렇게 만들어진 숫자가 처음에 입력받은 수와 같다면 위의 연산을 한 횟수를 출력하면 됩니다.
[백준 10951번-파이썬/Python] A+B - 4
http://acmicpc.net/problem/10951 {코드} while True: try: a, b = map(int, input().split()) print(a+b) except EOFError: break {설명} 이 문제의 요점은 테스트 케이스의 수를 모른다는 것이다. 즉, EOF에 대해 알아야 합니다. EOF란 End of File의 약자로 간단하게 말하면 입력 파일의 마지막 줄까지 읽고 더 이상 읽을 것이 없다는 것입니다. 이렇게 EOF가 되면 입력에서 에러가 나기 때문에 프로그램의 정상적인 작동을 위해 에러 핸들링을 합니다. 파이썬의 try/except/finally를 알면 while문과 함께 사용하여 쉽게 풀 수 있는 문제가 되겠습니다. *다른 분들의 코드를 보면 except 뒤에 ..
[백준 10952번-파이썬/Python] A+B - 5
http://acmicpc.net/problem/10952 {코드} while True: a, b = map(int, input().split()) if a == b == 0: break print(a+b) {설명} 이 문제는 while문을 이용한 문제로 입력의 두 숫자가 0, 0이 아닐 때까지 두 숫자의 합을 출력하는 문제입니다. while문과 for문의 차이를 간단히 설명하면 for문은 반복 횟수를 알때, while문은 어떤 조건에 부합할 때까지 반복할 때 사용합니다.
[백준 10871번-파이썬/Python] X보다 작은 수
http://acmicpc.net/problem/10871 {코드} _, x = map(int, input().split()) for data in map(int, input().split()): if data < x: print(data, end=' ') {설명} 반복문과 조건문을 같이 사용하는 문제로 쉽게 풀 수 있는 문제이다. 한 가지 알아둘 것은 map함수는 iterable로 반복문에서 한 값씩 가져오는 것이 가능하다는 것이다. *print문은 기본적으로 \n을 실행하지만 end=을 통해 마지막에 붙일 문자열을 지정할 수 있다.
[백준 2439번-파이썬/Python] 별 찍기 - 2
http://acmicpc.net/problem/2439 {코드} n = int(input()) for i in range(1, n+1): print(' '*(n-i) + '*'*i) {설명} 이 문제도 지난 글과 같이 반복문의 전형적인 문제인 별 출력 문제입니다. 타 언어라면 이중 반복문을 사용해야 할 문제지만 파이썬의 * 연산자로 쉽게 풀 수 있습니다. 이 문제는 n번 줄에 n개의 별(*)을 출력하는 문제인데, 각 줄에 별을 출력하기 전에 공백이 있다는 걸 알 수 있습니다. 공백의 규칙은 매우 간단한데요, 바로 (총 줄의 수 - 현재 줄이 번호) 입니다. 예를 들어 총 줄의 수가 5라면 첫째줄에는 공백 4개와 별 1개, 둘째줄에는 공백 3개와 별 2개가 되는 것입니다. 다른 규칙으로는 한 줄에 공백의..
[백준 2438번-파이썬/Python] 별 찍기 - 1
http://acmicpc.net/problem/2438 {코드} for i in range(1, int(input())+1): print('*'*i) #----# [print('*'*i) for i in range(1, int(input())+1)] {설명} 별 찍기는 반복문을 공부할 때 가장 기본적인 문제로 피라미드, 다이아몬드, 삼각형 등 여러 유형이 있습니다. 이 문제는 그 중 가장 쉬운 삼각형 문제로 n번 줄에 n개의 별(*)을 출력하는 문제입니다. 다른 언어라면 이중 반복문을 사용할 문제지만 파이썬은 * 연산자를 사용하면 쉽게 풀 수 있습니다.
[백준 11022번-파이썬/Python] A+B - 8
http://acmicpc.net/problem/11022 {코드} for i in range(1, int(input())+1): a, b = map(int, input().split()) print(f'Case #{i}: {a} + {b} = {a+b}') {설명} 이 문제도 전의 A+B -7 번 문제처럼 아름답게 출력하는 문제입니다. 변수에 입력을 저장한다음 현재 테스트 케이스의 번호와 덧셈 식을 출력하면 됩니다.
[백준 11021번-파이썬/Python] A+B - 7
http://acmicpc.net/problem/11021 {코드} for i in range(1, int(input())+1): print(f'Case #{i}:',sum(map(int, input().split()))) {설명} 이 문제는 다른 A+B와 유사하지만 해당 덧셈이 몇 번째 덧셈인지 출력을 해 아름다운 출력을 하는 문제입니다. 코드는 다른 문제들과 거의 동일합니다.
[백준 2742번-파이썬/Python] 기찍 N
http://acmicpc.net/problem/2742 {코드} for i in range(int(input()), 0, -1): print(i) #--리스트 컴프리헨션 사용--# [print(i) for i in range(int(input()), 0, -1)] {설명} 이 문제는 백준 2741번 N 찍기 문제의 반대인 문제로 N부터 1까지의 수를 내림차순으로 한줄에 한개씩 출력하는 문제입니다. 여기서 range함수는 (시작값, 끝나는 값, 변화량)의 형태를 인자로 가지는데 시작값은 기본값 0을, 변화량은 기본값 1을 가지고 있습니다. 그렇기에 n에서 시작해 0까지 m(양수)씩 감소하는 range함수는 다음과 같습니다. range(n, -1, -m)
[백준 2741번-파이썬/Python] N 찍기
http://acmicpc.net/problem/2741 {코드} for i in range(1, int(input())+1): print(i) #--리스크 컴프리헨션 사용--# [print(i) for i in range(1, int(input())+1)] {설명} 이 문제는 백준 8393번 합 문제와 굉장히 유사한 문제로 1부터 N까지의 값을 각각 한줄에 한개씩 출력만 하면 되는 문제입니다.