본문 바로가기

알고리즘

[백준] 10816번 숫자 카드 2 (Python 파이썬) www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 지난번에 풀었던 10815번 숫자카드 1 문제의 상위 호환 문제이다. 숫자카드1 문제의 경우 이진탐색을 하여 찾고자 하는 숫자가 있으면 단순히 1을 출력하는 문제였다면, 이 문제는 찾고자 하는 숫자의 개수까지 구해야 한다. 처음에는 숫자카드 1처럼 이진탐색을 한 후에 찾은 숫자는 리스트에서 제외를 해주고 다시 이진탐색을 추가하는 식으로 해서 개수를 구했는데, 이진탐색임에도 불구.. 더보기
[백준] 5212 지구온난화 (Python 파이썬) www.acmicpc.net/problem/5212 5212번: 지구 온난화 첫째 줄에 지도의 크기 R과 C (1 ≤ R, C ≤ 10)가 주어진다. 다음 R개 줄에는 현재 지도가 주어진다. www.acmicpc.net 문제 설명 지도 크기 N x M을 입력받은 후에 각각의 좌표 칸 바다(.) 인지 땅(X)인지를 입력한다. 이 때, 50년 후의 섬 주변( 상, 하, 좌, 우) 으로 3개 이상의 바다가 존재한다면 그 땅은 바다로 변하게 된다. 또한 바다만 있는 줄이나 칸은 모두 사라진다. ( 맵의 바깥쪽은 모두 바다이기 때문에 바다만 있는 줄, 칸은 생략된다) 따라서 50년 후에는 당연히 맵의 크기는 줄어들 것이다. 이 때, 50년 후의 지도를 출력하면 된다. 위의 예제로 예를 들면, (3,0)의 X는 위.. 더보기
[백준] 3107 ipv6 (Python 파이썬) https://www.acmicpc.net/problem/3107 3107번: IPv6 첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다. www.acmicpc.net 문제 설명 IPv6의 주소는 32자리의 16진수를 4자리씩 끊어 나타낸다. 이때, 각 그룹은 콜론 (:)으로 구분해서 나타낸다. 예를 들면, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 이런 식으로 나타낸다. 문제에서는, 규칙 두가지가 존재한다. 1. 각 그룹의 앞자리의 0의 전체 또는 일부를 생략 할 수 있다. 위의 IPv6을 축약하면, 다음과 같다 2001:db8:85a3:0:00:8a2e:370:7334.. 더보기
[백준] 14500 테트로미노 (Python 파이썬) https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제 설명 링크에서 알 수 있듯이, 좌표 크기 N x M을 입력받은 후에 각각의 좌표 칸 마다 숫자를 부여한다. 그리고 우리가 흔히 해봤던 테트리스 게임의 블록 모양들을 이 좌표 위에 올려놓게 되는데 블록이 위치하는 좌표의 숫자들의 합이 최대가 되는 값을 구하면 된다. 즉, 내가 ㅡ(일자 막대) 모양의 블록을 (0,0) (0,1), (0,2), (0,3) 좌표 위에 올려놓았다면 이 네 좌표의 숫자.. 더보기
[백준] 8911번 거북이 (Python 파이썬) https://www.acmicpc.net/problem/8911 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 거북이 로봇이 좌표 ( 0, 0 ) 을 시작으로 움직인다. 알파벳으로 명령을 하게 되는데, F: 한 눈금 앞으로 B: 한 눈금 뒤로 L: 왼쪽으로 90도 회전 R: 오른쪽으로 90도 회전 이다. 주의할 점은, L과 R 명령일 때는 움직이지 않고 현재 내 좌표에서 방향만 바꾸는 것이다. 각각의 케이스에 대하여, 거북이의 이동좌표를 모두 포함하는 가장 작은 직사각형의 넓이를 출력하면 된다. 즉, (0,0) ->.. 더보기
[백준] 1654번 랜선 자르기 (Python 파이썬) https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제는 내가 현재 가지고 있는 서로 다른 길이의 랜선들을 잘라서 동일한 길이의 새로운 랜선을 여러개 만드는 것이다. 내가 가지고 있는 랜선의 개수 K와 새로 만들 랜선의 개수 N을 입력받는다. 예를 들어 K=4, N=11 이라면 4개의 긴 랜선을 잘라 11개의 짧은 랜선을 만드는 것이다. 이 때, 11개를 만들 수 있는 랜선의 최대 길이를 구하면 된다. 즉, 11개를 .. 더보기
[백준] 3020번 개똥벌레 (Python 파이썬) 누적합 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 지난번에 이분탐색(Binary Search)으로 풀었던 개똥벌레 문제 https://hongcoding.tistory.com/5 [백준] 3020번 개똥벌레 (Python 파이썬) https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 .. 더보기
[백준] 3020번 개똥벌레 (Python 파이썬) https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 문제에 대한 자세한 설명은 위 링크에 기술 되어있다. 쉽게 풀어쓰자면 동굴의 길이(N)와 높이(H)를 입력받는다. 동굴은 석순과 종유석으로 구성되어 있는데, 석순은 아래에서 자라는 고드름 종유석은 천장에서 나는 고드름이라고 생각하면 된다. 문제에서 동굴의 길이만큼 석순과 종유석의 길이를 입력받는데, 번갈아 가면서 입력받는다. ( 석순과 종유석은 각각 동굴의 길이 1만큼 차지한다) 예를 들어, 1 3 .. 더보기