문제풀이/BOJ

백준 알고리즘
·문제풀이/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') ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000 www.acmicpc.net [풀이] 입력의 둘째 줄은 n이 0보다 큰 경우에만 주어지기 때문에 n == 0인 경우와 n > 0인 경우로 나눈다. 1. n == 0일 때 랭킹은 항상 1이다. 2. n > 0일 경우 1) n ==p이고 랭킹의 가장 마지막 점수(가장 작은 점수)가 유진의 점수와 크거나 같을 경우 -1을 출력한다. 2) 그 외에는 랭킹의 점수가 유진이의 점수보다 작거나 같을 ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net [풀이] 단어 각각의 길이가 1 이상이어야 하기 때문에 첫 번째 단어는 len(s)-2까지, 두 번째 단어는 그다음부터 len(s)-1까지, 세 번째 단어는 len(s)까지 검사한다. 변수 temp에 순서대로 슬라이싱 해 역순으로 넣고 temp를 voca 리스트에 추가한다. list를 출력하면 ['moletib', 'mboleti', 'mibolet', 'mtibole', 'metibol'..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 www.acmicpc.net [풀이] sort 함수에서 key값을 str.lower로 주면 풀 수 있다. [코드] if __name__ == '__main__': while True: voca = [] n = int(input()) if n == 0: quit() for i in range(n): voca.append(input()) voca.sort(key=str.lower) print(voca[0])
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net [풀이] 입력받을 때 '9'를 '6'으로 변환해 받는다. 그 후 0부터 8까지의 빈도수를 셀 리스트에 count 함수를 사용해 구한 값을 넣어준다. 주의할 점은 9와 6을 같이 frequent[6]에 담았기 때문에 2를 나눠준 후 나머지 값은 더해준다. 따라서 frequent[6] = frequent[6] // 2 + frequent[6] % 2 를 통해 값을 알맞게 조정해준다. 그 후 max 함수를 통해 frequent 리스트의 최댓값을 구한다. [코드] if __name__..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2435 2435번: 기상청 인턴 신현수 첫째 줄에 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 주어진다. N은 온도를 측정한 전체 날짜의 수이다. N은 2이상, 100이하이다. K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사 www.acmicpc.net [풀이] 진짜 문제에 쓸데없는 얘기 대박..;;... 반복문의 i 범위를 n-k로 생각했었는데 n과 k의 숫자가 동일할 경우에는 한 번도 비교를 안 하게 된다. 따라서 n-k+1을 해주어야 한다. 이것만 조심하면 금방 푸는 문제 [코드] if __name__ == '__main__': n, k = map(int, input().split()) measures =..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2508 2508번: 사탕 박사 고창영 창영이가 드디어 취직을 했다!! 그가 30세까지 취직을 안하던 이유는 바로 마음에 다니는 직장을 찾지 못해서였다. 이번에 창영이가 취직한 곳은 사탕 공장이다. 사탕 공장에 다니면 사탕 처럼 www.acmicpc.net [풀이] 우선 사탕 입력을 box 리스트에 넣어주었다. box를 출력하면 ['.>ooooo
서채리
'문제풀이/BOJ' 카테고리의 글 목록 (13 Page)