Algorithm

·문제풀이/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..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net [풀이] 처음에 접근했던 방법에서 런타임 에러가 났다. 찾아보니 나눗셈을 수학적으로 접근해야 에러가 안 난다고 한다. 25 / 7을 할 경우 몫이 3이고 나머지가 4이다. 나눗셈은 이전 자릿수에서 구해진 나머지 수에 10을 곱한 후 나오는 몫과 나머지를 반복적으로 구한다. 이를 구하고자 하는 소수점 아래 자릿수인 n-1만큼 반복해서 구한다. [코드] - 런타임 에러 (IndexErro..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net [풀이] 정렬할 때 조건에 글자 길이도 필요하기 때문에 입력 단어를 넣을 때 len을 이용해 글자 길이도 리스트 voca_li에 함께 넣어주었다. 또, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력해야 하기 때문에 set을 이용해 중복 단어를 삭제했다. 주 핵심은 이중 리스트 정렬 문제였는데 voca_li = [(2, 'it'), (4, 'wait'), (1, 'i') ..
서채리
'Algorithm' 태그의 글 목록 (11 Page)