개발 공부/알고리즘 문제풀이 56

[백준] 10871. X보다 작은 수

10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net # 10871 X보다 작은 수 import sys N, X = map(int, sys.stdin.readline().rstrip().split()) arr = list(map(int, sys.stdin.readline().rstrip().split())) for i in arr: if i < X: print(i, end=' ') 평소에 input().split()으로 받던 걸 sys.stdin.readline().rstrip().split()으로 ..

[백준] 2439. 별 찍기 - 2

2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 정답 # 2439 별 찍기 - 2 N = int(input()) for i in range(1, N+1): if i == N: print(' ' * (N-i) + '*' * i, end='') break print(' ' * (N-i) + '*' * i) 2년 전쯤인가, 이 문제랑 비슷한 문제를 맞닥뜨린 적이 있었는데(아마 가운데 정렬로 별 찍기였던 것 같다.) 그때는 어떻게 풀어야 할지 몰라 당황했던 기억이 있다. 싸피에서 공부를 한 지금 보니 너무나 쉬운 문제라, 스스로 많이 성장했다고 칭찬했다. +..

[백준] 2742 기찍 N, 11021 A+B-7, 2438 별 찍기 - 1

반복문 단계 1부터 N까지의 합을 구하는 문제. 물론 반복문 없이 풀 수도 있습니다. www.acmicpc.net 단계별 풀기 - 반복문 부분의 문제들이다. 정답 # 2742 기찍 N N = int(input()) for i in range(N, 0, -1): if i == 1: print(i, end='') break print(i) # 11021 A+B-7 import sys T = int(input()) for tc in range(1, T+1): n, m = map(int, sys.stdin.readline().rstrip().split()) print('Case #{}: {}'.format(tc, n+m)) # 2438 별 찍기 - 1 N = int(input()) for i in range(1..

[백준] 15552. 빠른 A+B

15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 정답 # 15552 빠른 A+B import sys T = int(input()) for tc in range(1, T+1): a, b = map(int, sys.stdin.readline().rstrip().split()) print(a+b) sys를 사용해 많은 양의 입력을 빠르게 받는 방법이다. 사실 이제껏 sys.stdin = open('input.txt', 'r') 이런 식으로 테스트케이스를 받을 때 사용했는데, 정작 왜 sys.stdin이 빠른지 잘 몰랐다. 그래서 오늘..

[백준] 2739 구구단, 10950 A+B_3, 8393 합

반복문 단계 1부터 N까지의 합을 구하는 문제. 물론 반복문 없이 풀 수도 있습니다. www.acmicpc.net 단계별 풀기는 현재 반복문 문제들 모아푸는 중! # 2739 구구단 N = int(input()) for i in range(1, 10): if i == 9: print('{} * {} = {}'.format(N, i, N * i), end='') else: print('{} * {} = {}'.format(N, i, N*i)) # 10950 A+B-3 T = int(input()) arr = [] for test in range(1, T+1): n, m = map(int, input().split()) arr.append(n+m) for i in range(len(arr)): if i ==..

[백준] 2480. 주사위 세개

2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net # 2480 주사위 세개 a, b, c = map(int, input().split()) max_num = 0 # case 1 세개 같은 것 나오면 10000+(같은눈)*1000원 if a == b and b == c: print(10000 + a*1000 ) # case 2 같은 눈 2개만 나오면 1000 + 같은 눈 * 100 elif a == b or a == c: print(1000 + a*100) elif b == c: print(1000..

[백준] 2525. 오븐 시계

2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 정답 # 2525 오븐 시계 H, M = map(int, input().split()) add_M = int(input()) M += add_M while M >= 60: M = M - 60 H += 1 if H > 23: H = 24 - H print('{} {}'.format(H, M)) 저번에 풀었던 알람 시계와 흡사하게 풀면 되는 문제. 이번엔 조건문 말고 반복문도 함께 사용했다. M에 분이 더해졌을 때 180분, 240분 이렇게 될 수도 있..

[백준] 1330 두 수 비교하기, 9498 시험 성적, 2753 윤년, 14681 사분면 고르기

조건문 단계 점이 어느 사분면에 있는지 알아내는 문제 www.acmicpc.net 조건문으로 푸는 문제들만 모아놓은 카테고리에서 문제를 풀었다. 참고로 단계별로 풀어보기 링크는 다음과 같다.(https://www.acmicpc.net/step) 정답 # 1330 두 수 비교하기 A, B = map(int, input().split()) if A > B: print('>') elif A == B: print('==') else: print('

[백준] 2884. 알람 시계

2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리..

[백준] 2588. 곱셈

2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 정답: n = int(input()) m = input() sum = 0 for i in range(2, -1, -1): num = int(m[i]) * n print(num) sum += num * (10 ** (2-i)) print(sum) 처음에 별 생각 없이 10으로 계속 나눠서 100의 자리 숫자부터 1의 자리 숫자 순으로 출력했는데, 1의 자리..