문제풀이/BOJ

백준 알고리즘
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다. www.acmicpc.net [풀이] 되게 쉽다고 생각하고 풀었다가 시간 초과 떠서 슬펐음.. 다른 방법은 진짜 모르겠어서 찾아봤더니 문자 하나씩 곱해 더하는 거랑 각자 더한 것을 곱하는 것과 결괏값이 같다고 한다.. 이거를 어떻게 생각해내지?!?!.. 예제를 풀어보면 sum(A) = 6, sum(B) = 9 이기 때문에 sum(A) * sum(B) 는 54가 된다. [코드] - 시간 초과 import sys if __name__ == '__main__': A, B = sys.stdin.readline().split()..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net [풀이] 1) 첫 번째 제출 코드 input을 [::-1]을 이용해 거꾸로 받아 n에 저장한다. n을 3개씩 슬라이싱한 len()이 2이면 '0'을 추가, 1이면 '00'을 더한다. 그 후 자릿수에 맞게 곱하고 더해서 8진수 octal을 구한 후 str()로 문자열화 해 result에 추가한다. 마지막에 result를 거꾸로 출력한다. 2) 두 번째 수정 코드 int()는 인자가 두 개가 들어갈 수 있는 함수이다. int(input(), 2)의 경우 input을 2진수로 인식해준다. 인자의 ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net [풀이] sys.stdin.readline()이 기존에 쓰던 입력 방식보다 빠른 입력이라고 해서 바꿨다. # N, m, M, T, R = map(int, input().split()) 밑 방법보다 시간복잡도가 안좋음 N, m, M, T, R = map(int, sys.stdin.readline().split()) 1) 운동을 할 수 없는 경우 초기 맥박 + 운동 시 증가하는 맥박 > 최대 맥박 일 경우 운동을 할 수 없으므로 반복문을 나온다. 2) 운동 현재 맥박인 pulse + 운동 시 증가하는 맥박 최대 맥박 일 경우 휴식..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net [풀이] 입력 내용을 다시 출력할 필요가 없어 대소문자 구분 없게 개수를 세기 위해 input().lower()로 설정 차례대로 sentence가 모음으로 초기화해놓은 vowels 리스트에 있는지 검사 후 있으면 cnt 1 증가 [코드] if __name__ == '__main__': vowels = ['a', 'e', 'i', 'o', 'u'] while True:..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1333 1333번: 부재중 전화 첫째 줄에 N, L, D가 공백을 사이에 두고 주어진다. 모든 수는 1,000보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 노래가 재생되고 있는 시간과 전화를 받을 수 있는 시간을 boolean 리스트로 체크한다. True일 경우 노래가 재생 중이고, False일 경우 전화를 받을 수 있다. 예제 입력의 경우 첫 번째 곡이 나올 때인 s = (노래 길이 5초 + 조용한 구간 5초) * 0 = 0이고 s부터 s+l인 5초. 즉 0~5초는 True로 설정한다. 두 번째 곡은 s = (5 + 5) * 1 = 10이고 10부터 15초를 True로 설정한다. 그 후 0초부터 전화벨이 울리는 d..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1284 1284번: 집 주소 재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하 www.acmicpc.net [풀이] 변수 width를 1로 초기화해 호수판 맨 앞의 여백 1을 넣어주었다. 그 후 조건문으로 width를 더해 출력한다. [코드] if __name__ == '__main__': while True: n = input() width = 1 if n == '0': break for i in n: if i == '0': width += 4 elif i == '1': width += 2 else: w..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1680 1680번: 쓰레기 수거 쓰레기장에서 출발한 쓰레기차가 여러 지점들을 방문하며 쓰레기를 모으고 있다. 쓰레기차는 쓰레기장에서 가까운 지점부터 방문하며, 쓰레기를 모으다가 다음과 같은 경우에 쓰레기장으로 돌 www.acmicpc.net [풀이] [코드] if __name__ == '__main__': for _ in range(int(input())): w, n = map(int, input().split()) testcase = [] for __ in range(n): x_i, w_i = map(int, input().split()) testcase.append([x_i, w_i]) capacity = 0 distance = 0 ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1357 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev( www.acmicpc.net [풀이] 문자열 x, y를 슬라이싱 [::-1]을 이용해 뒤집어준다. 뒤집은 값을 int로 바꾸어 더해준 후 다시 문자열로 바꾼 후 슬라이싱을 이용해 뒤집는다. 그 후 뒤집은 값을 다시 int로 바꾸어 출력한다. [코드] if __name__ == '__main__': x, y = input().split() plus = int(str(in..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 입력값보다 작거나 큰 금민수 중에서 가장 큰 수를 구해야 하기 때문에 입력값에서부터 -1씩 해주면서 검사한다. 입력수를 str로 변환해 '4'이거나 '7'이 아닌 경우 flag는 False가 되고 마지막 조건문에서 flag가 True일 경우에 n을 출력하게 된다. [코드] if __name__ == '__main__': n = int(input()) while True: flag = True for i in str(n): if i != '4' and i != '7': ..
서채리
'문제풀이/BOJ' 카테고리의 글 목록 (12 Page)