본문 바로가기

전체 글

(263)
[백준 파이썬] #2164: 카드2 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net [오답] → 시간초과 이 문제의 시간초과를 해결하려면 collections 패키지의 deque 모듈을 사용해야 한다. [정답] ※ 문제 "예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다.(→ 맨 위의 수를 버린다.) 여기서 2를 제일 아래로 옮기면 342가 된다.(→ 맨 위의 수를 맨 밑으로 보낸다.) 3을 버리면 42가 ..
[백준 파이썬] #10817: 세 수 https://www.acmicpc.net/problem/10817 10817번: 세 수 첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100) www.acmicpc.net [정답] 1. 세 수를 입력받아 int형태로 리스트 num_list에 추가한다. 2. num_list를 오름차순 정렬한다. 3. 두 번째로 큰 정수를 출력해야 하므로 오름차순 정렬된 num_list의 2번째 수 즉 num_list[1]을 출력한다.
[백준 파이썬] #2935: 소음 https://www.acmicpc.net/problem/2935 2935번: 소음 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 www.acmicpc.net [정답] 1. 양의 정수 A를 입력받는다. 2. 연산자 + 혹은 *를 C에 입력받는다. 3. 양의 정수 B를 입력받는다. 4. 만약 연산자 C가 '+'일 경우 A+B를 출력하고, 아닐 경우 즉 C가 '*'일 경우이므로 A*B를 출력한다.
[백준 파이썬] #10828: 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net [정답] 먼저 stack에 대한 함수들을 정의한다. 1. 'push X: 정수 X를 스택에 넣는 연산이다.' → push(X): append() 함수를 사용하여 리스트 stack에 인자값 X를 push한다. 2. 'pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.' → pop(): len(stack)=..
[백준 파이썬] #2108: 통계학 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net [정답] 1. 수의 개수 N을 입력받는다. 수들을 저장할 리스트 num을 정의한다. 2. for문을 돌면서 num에 수들을 저장한다. 그리고 num을 정렬한다. 3. 산술평균을 구하는 함수 mean()를 정의한다. round()함수를 사용하여 반올림값을 정해준다. 4. 중앙값을 구하는 함수 mid()를 정의한다. 5. 최빈값을 구하는 함수 mode()를 정의한다. collections 라이브러리의 Counter를 사용하여 최빈값을 ..
[백준 파이썬] #11292: 키 큰 사람 https://www.acmicpc.net/problem/11292 11292번: 키 큰 사람 민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였 www.acmicpc.net [정답] 1. 학생의 수 N을 입력받고 만약 N==0이라면 while문을 빠져나간다. 2. 학생의 정보를 받을 student를 정의하고 for문을 돌면서 name,height값을 입력받아 student에 추가한다. 3. for문을 돌면서 student의 정보를 가져오면서 만약 ans_hei 값(=해당 height 값)이 student.values() 즉 height 값의 최대값과 같다면 ans_name..
[백준 파이썬] #10816: 숫자 카드 2 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net [오답] → 시간초과 문제를 보자마자 'count() 함수를 사용하면 되겠다' 하고 풀었는데 역시나 오답,,, 호락호락하지 않은 백준!!! ... 이 문제를 검색해보다가 bisect 라이브러리를 사용하신 블로거를 보았다. 파이썬에서 이진 탐색을 쉽게 구현할 수 있는 bisect 라이브러리는 정렬된 배열에서 특정한 원소를 찾아야 할 때 매우 효과적이다. [참고] h..
[백준 파이썬] #10867: 중복 빼고 정렬하기 https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net [풀이 생각] 1 4 2 3 1 4 2 3 1 2 → 1 2 3 4 같은 수는 한 번만 출력하기 위해서 중복을 허용하지 않는 집합의 개념을 사용한다. 리스트에 수들을 넣고 리스트를 집합 형태로 바꾸면 중복되는 숫자들은 제거된다. [정답] 1. 수의 개수 N을 입력받는다. 2. 숫자들을 입력받아 int형태로 리스트 word에 넣어준다. 3. word를 집합 형태로 바꾸고 sorted()하여 ans를 정의한다. 4. 최종적으로 a..