파이썬(357)
-
백준 온라인 저지, 자료구조 / 11652번: 카드 (파이썬 / , 백준 실버문제)
문제 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. 입력 첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 출력 첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다. 제한 예제 입력 1 복사 5 1 2 1 2 1 예제 출력 1 복사 1 예제 입력 2 복사 6 1 2 1 2 1 2 예제 출력 2 복사 1 힌트 접근 방법-..
2021.12.08 -
백준 온라인 저지, 이분매칭 / 2188번: 축사 (파이썬 / , 백준 플레티넘문제)
문제 농부 존은 소 축사를 완성하였다. 축사 환경을 쾌적하게 유지하기 위해서, 존은 축사를 M개의 칸으로 구분하고, 한 칸에는 최대 한 마리의 소만 들어가게 계획했다. 첫 주에는 소를 임의 배정해서 축사를 운영했으나, 곧 문제가 발생하게 되었다. 바로 소가 자신이 희망하는 몇 개의 축사 외에는 들어가기를 거부하는 것이다. 농부 존을 도와 최대한 많은 수의 소가 축사에 들어갈 수 있도록 하는 프로그램을 작성하시오. 축사의 번호는 1부터 M까지 매겨져 있다. 입력 첫째 줄에 소의 수 N과 축사의 수 M이 주어진다. (1 ≤ N, M ≤ 200) 둘째 줄부터 N개의 줄에는 각 소가 들어가기 원하는 축사에 대한 정보가 주어진다. i번째 소가 들어가기 원하는 축사의 수 Si (0 ≤ Si ≤ M)이 먼저 주어지고..
2021.12.07 -
백준 온라인 저지, 구현 / 14500번: 테트로미노 (파이썬 / , 백준 골드문제, 삼성 SW 기출문제)
문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오. 테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 놓아야 하며, 회..
2021.12.07 -
백준 온라인 저지, 그리디 / 1911번: 흙길보수하기 (파이썬 / , 백준 실버문제)
문제 어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1
2021.12.07 -
백준 온라인 저지, 그리디 / 19941번: 햄버거분배 (파이썬 / , 백준 실버문제)
문제 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사람 햄버거 햄버거 사람 사람 햄버거 사람 1 2 3 4 5 6 7 8 9 10 11 12 위의 상태에서 $K = 1$인 경우를 생각해보자. 이 경우 모든 사람은 자신과 인접한 햄버거만 먹을 수 있다. 10번의 위치에 있는 사람은 11번 위치에 있는 햄버거를 먹을 수 있다. 이 경우 다음과 같이 최대 5명의 사람이 햄버거를 먹을 수 있다. 2번 위치에 있는 사람: 1번 위치에 있는 햄버거 4번 위치에 있는 사람: 5번 위치에 있는 햄버거 6번 위치에 있는 사람: 7번 위치에 있는 햄버거 9번 위치에 있는 사람: 8..
2021.12.07 -
백준 온라인 저지, 그리디 / 16953번: AB (파이썬 / , 백준 실버문제)
문제 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 입력 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 제한 예제 입력 1 복사 2 162 예제 출력 1 복사 5 2 → 4 → 8 → 81 → 162 예제 입력 2 복사 4 42 예제 출력 2 복사 -1 예제 입력 3 복사 100 40021 예제 출력 3 복사 5 100 → 200 → 2001 → 4002 → 40021 힌트 접근 방법- 연산 조건에 따라 queue에 값을 삽입하고 빼면서 값을 ..
2021.12.06