문제풀이

·문제풀이/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
[문제] https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net [풀이] 입력된 b가 7일 때 숫자도 7까지 들어가지는 않기 때문에 대략 b를 2로 나눈 숫자에 1을 더한 만큼의 숫자까지 들어가는 것 같아서 반복문의 범위를 b//2+2로 지정해주었다. [코드] if __name__ == '__main__': a, b = map(int, input().split()) sequence = [] for i in range(b//2+2): sequence += [i] * i pri..
서채리
'문제풀이' 카테고리의 글 목록 (14 Page)