알고리즘 공부/BOJ백준 풀이
[백준 15552번-파이썬/Python] 빠른 A+B
http://acmicpc.net/problem/15552 {코드} import sys.stdin.readline input = sys.stdin.readline for _ in range(int(input()): print(sum(map(int, input().split())) {설명} 이 문제의 설명을 보면 입출력이 느리면 시간 초과가 날 수 있다고 명시되어 있습니다. 그리고 파이썬으로는 기본 함수인 input보다는 sys 라이브러리의 sys.stdin.readline 함수를 사용하는 것을 추천한다고 되어있습니다. 그러면 왜 input 대신 저 긴 함수를 쓰라고 할까요? 당연하지만 저 긴 함수가 더 빠르게 처리하기 때문입니다. 간단히 설명하면 input에는 문자열 파라미터를 넣을 수 있는데 이 파라미..
[백준 8393번-파이썬/Python] 합
http://acmicpc.net/problem/8393 {코드} ans = 0 for i in range(1, int(input())+1): ans += i print(ans) #----# n = int(input()) print(n(n+1)//2) {설명} 1부터 n까지의 합을 구하는 문제이므로 1에서 n+1까지 반복하고 반복할 때마다 총합을 저장하는 변수에 더해주면 됩니다.(보는 게 빠름) 그와 별개로 시그마를 배우셨다면 1에서 N까지의 합은 n(n+1)/2으로 구할 수 있다는 것을 그대로 코드로 옯겨도 됩니다.
[백준 10950번-파이썬/Python] A+B -3
http://acmicpc.net/problem/10950 {코드} for _ in range(int(input())): print(sum(map(int, input().split()))) {설명} 입력받은 T만큼 반복하며 주어지는 두 값의 합을 계속해서 출력하면 된다. 반복문의 _ 은 파이썬에서 사용하지 않을 변수에 쓰는 더미(Dummy) 값으로 생각하면 된다. 또한 range함수에 T를 바로 넣은 것은 T를 추후 사용할 일이 없기 때문이다.
[백준 2739번-파이썬/Python] 구구단
http://acmicpc.net/problem/2739 {코드} n = int(input()) for i in range(1, 10): print(n, '*', i, '=', n*i) {설명} 이 문제는 반복문에 대해 알면 쉽게 풀 수 있는 문제입니다. 입력받은 n을 1~9까지 각각 곱한 결과를 한 줄씩 출력하면 됩니다.
[백준 2884번-파이썬/Python] 알람 시계 맞추기
http://acmicpc.net/problem/2884 {코드} h, m = map(int, input().split()) m -= 45 if m < 0: m += 60 if h == 0: h = 23 else: h -= 1 print(h, m) {설명} 이 문제는 주어진 알람 시각에서 45을 빼는 문제입니다. 간단하게 생각하면 분에서 45를 빼고 만약 분이 0보다 작다면 분에 60을 더하고 시각에서 1을 빼면 됩니다. 이때, 만약 시각이 0이라면 1을 뺀 값은 23이 되어야 한다는 것을 염두에 두어야 합니다.
[백준 14681번-파이썬/Python] 사분면 고르기
http://acmicpc.net/problem/14681 {코드} x = int(input()) y = int(input()) if x > 0: print(1 if y > 0 else 4) else: print(2 if y > 0 else 3) {설명} 간단한 수학 문제로 x와 y의 부호에 따라 아래 표에 맞게 해당하는 사분면을 출력하면 된다. 이와 별개로 x나 y가 0이라면 어떠한 사분면에도 속하지 않으나 조건에서 0인 경우는 없다고 명시되어 있으므로 무시한다. x y 사분면 양수 양수 1 양수 음수 4 음수 양수 2 음수 음수 3
[백준 2753번-파이썬/Python] 윤년
http://acmicpc.net/problem/2753 {코드} year = int(input()) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print(1) else: print(0) # 조건연산자를 사용한 코드 print(1 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else 0) {설명} 이 문제는 전형적인 if문 문제로 조건문 한 줄로 풀 수 있는 문제입니다. 결국 4의 배수일때 100의 배수가 아니거나 400의 배수면 윤년이 되는 것을 잘 파악하면 됩니다. (문제에 적혀있는 거랑 다르지 않습ㄴ..)
[백준 9498번-파이썬/Python] 시험 성적
http://acmicpc.net/problem/9498 {코드} score = int(input()) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 70: print('C') elif score >= 60: print('D') else: print('F') {설명} 지난 글에선 조건 연산자(삼항 연산자)를 통해 두 수를 비교하는 문제를 풀었습니다. 이번에도 똑같이 조건연산자를 사용할 수는 있으나 확인해야 하는 조건이 많아서 코드 줄이 길어지거 가독성이 떨어집니다. 그래서 이번에는 일반적인 조건문을 통해 풀어보았습니다.
[백준 1330번-파이썬/Python] 두 수 비교하기
http://acmicpc.net/problem/1330 {코드} a, b = map(int, input().split()) print('>' if a > b else '
[백준 2588번-파이썬/Python] 곱셈
http://acmicpc.net/problem/2588 {코드} A = int(input()) B = input() for digit in B[::-1]: # reversed(B)도 가능 print(A*int(digit)) print(A*int(B)) {설명} 입력의 첫 번째 수를 A, 두 번째 수를 B라고 가정하면 출력은 A*(B의 각 자릿수) 에다가 A*B를 출력하면 된다. 그러면 A를 정수로 입력받고 B를 문자열로 받으면 B를 반복문에 넣어 int함수를 통해 곱하면 됩니다. 이때 일의 자리 숫자부터 곱한 결과를 출력해야 하므로 B를 반전시켜 반복해야 합니다.