[문제] https://www.acmicpc.net/problem/2408 2408번: 큰 수 계산 수의 개수 N(1 ≤ N ≤ 10) 이 주어지고 다음 2*N - 1 줄에는 수와 연산자(+, -, *, /) 가 번갈아서 들어온다. www.acmicpc.net [풀이] eval 함수만 알고 있다면 쉽게 풀 수 있는 문제다. 주의할 점은 '/'를 '//'로 바꿔주는 것 [코드] if __name__ == '__main__': equation = '' n = int(input()) for _ in range(n + n - 1): equation += input() equation = equation.replace('/', '//') print(eval(equation))
문제풀이/BOJ
백준 알고리즘[문제] https://www.acmicpc.net/problem/2386 2386번: 도비의 영어 공부 출력의 각 줄은 입력으로 주어진 소문자와 그 소문자 알파벳이 나타난 횟수로 이루어진다. 이때 문장에서 해당 알파벳이 소문자로 나타나던 대문자로 나타나던 모두 세야 한다. www.acmicpc.net [풀이] while문으로 입력을 받고 '#'이 입력되는 경우 while문을 탈출한다. 슬라이싱을 이용해 입력값을 알파벳과 문장으로 나누고 lower() 함수를 이용해 문장 전체를 소문자로 변환한다. 그 후 count함수를 사용해 해당 알파벳이 문장 안에 몇 번 나타나는지 구한다. [코드] if __name__ == "__main__": while True: question = input() if quest..
[문제] https://www.acmicpc.net/problem/1731 1731번: 추론 등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 더해 www.acmicpc.net [풀이] 수열의 원소들을 num 리스트에 담는다. 원소들은 항상 3 이상이기 때문에 num[2]까지 이전 인덱스 원소와 비교해 등차수열인지 등비수열인지 찾는다. [코드] if __name__ == "__main__": num = [] for _ in range(int(input())): num.append(int(input())) if num[1] - num[0] == num[2] - nu..
[문제] https://www.acmicpc.net/problem/2810 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net [풀이] 커플 좌석인 "LL" 좌석일 경우 replace 함수를 이용해 "LL"을 "L"로 변환하여 좌석 두 개를 한 좌석으로 바꿔주었다. len 함수를 통해 해당 문자열의 길이를 구한 다음 1을 더해준 값이 컵홀더를 놓을 수 있는 최대 사람의 값이다. 특별히 신경 쓸 부분은 만약 좌석이 "SSSSS"일 경우에는 문자열의 길이를 구한 후 1을 더하게 되면 6, 즉 총 사람 수인 5명보다 많기 때문에 입력 문자열에 "LL"이 없는 경우에는 n을 출력하게 만들었다. [코드] if __nam..
[문제] https://www.acmicpc.net/problem/2979 2979번: 트럭 주차 첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장 www.acmicpc.net [풀이] 트럭 세 대의 도착시간과 떠난 시간을 table 리스트에 담는다. 그 후 떠난 시간 세 개를 max함수로 비교해 가장 마지막으로 떠난 트럭의 시간을 구해 해당 크기의 리스트 parking을 만들어 모두 0으로 초기화한다. 콘솔에 입력한 시간은 1부터 시작하나 리스트의 인덱스는 0부터 시작하기 때문에 도착시간과 떠난 시간 모두 각 값에서 1씩 빼 parking ..
[문제] https://www.acmicpc.net/problem/2789 2789번: 유학 금지 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, www.acmicpc.net [풀이] 입력 str의 첫 번째 문자부터 "CAMBRIDGE"에 포함된 알파벳이 있는지 비교한다. 같지 않을 때마다 변수 cnt를 1씩 증가시키는데 끝까지 비교했을 때 cnt가 9라면 "CAMBRIDGE"에 있는 알파벳이 포함되어있지 않은 경우이기 때문에 최종 출력 문자 completed에 문자를 추가한다. 위 과정은 replace 함수를 쓰면 간단해지는데 "CAMBRIDGE"의 알파벳이 있을..
[문제] https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net [풀이] 사용자 입력 값을 split() 함수로 나누어 변수 text에 넣으면 빈칸을 제외한 각 단어로 리스트가 만들어진다. 그렇게 만들어진 리스트의 길이를 구하면 완성 [코드] if __name__ == '__main__': text = input().split() print(len(text))
[문제] https://www.acmicpc.net/problem/2037 2037번: 문자메시지 첫째 줄에 p와 w가 주어진다. (1 ≤ p, w ≤ 1,000) p는 버튼을 한번 누르는데 걸리는 시간이고, w는 AC와 같은, 같은 숫자인 문자를 연속으로 찍기 위해 기다리는 시간을 의미한다. 그리고 둘째 줄에는 www.acmicpc.net [풀이] 그림대로 파이썬 이중 리스트를 만들었다. total과 past_j 변수를 초기화한 후 입력받은 값을 넣은 text 변수의 첫 번째 글자부터 가져와 그 글자가 공백(' ')이면 2를 추가, 아닐 경우 이중 리스트 keyboard에 접근해 첫 번째 글자와 일치하는 값이 있는 인덱스를 구했다. 만약 이전에 입력했던 글자와 현재 입력하려는 글자가 같은 버튼이라면(i..
[문제] https://www.acmicpc.net/problem/1362 1362번: 펫 당신은 게임으로 펫을 기르고 있습니다. 이 펫은 웃는 표정, 슬픈 표정을 가지고 있으며, 만약 죽는다면 '드러눕습니다.' 펫에게는 적정 체중이 있습니다. 펫의 실제 체중이 적정 체중의 1/2배를 www.acmicpc.net [풀이] 이번 문제의 놓치기 쉬운 중요한 포인트는 펫이 죽었을 경우에 다시 살릴 수 없다는 것이다. 때문에 'E' 또는 'F'와 n 값이 입력돼 펫의 실제 체중을 구할 때마다 실제 체중이 0 이하인지를 확인해 펫이 죽었는지 확인했다. 만약 die 가 True로 바뀌었을 경우, 조건문 if not die에 진입하지 못해 더 이상 밥을 주거나 운동을 시킬 수 없게 된다. [코드] if __name_..