백준
-
Python 백준 2252 - 줄 세우기(위상 정렬)프로그래머스문제정리 & Python잡다한것 2021. 6. 4. 00:55
위상 정렬(Topological Sorting) 조건 : Cycle 이 없는, 유향 그래프에 대해서 정렬을 수행한다. (DAG) 문제 풀이 순서 1. 그래프를 구현한다. -> list형태로 구현, 무방향 그래프(양방향 그래프)가 아닌 유방향 그래프로 나타낸다. 2. Indgree(노드에 들어가는 진출 차수)를 그래프를 표현할때 같이 배열로 설정해 놓는다. 3. indgree 가 0 인 것을 queue에 넣는다. 그리고 탐색을 시작한다.(어짜피 indgree가 같은 것은 순서에는 상관이 없을 것이다.) 4. queue에서 하나를 빼고 해당 값을 결과 List에 넣는다. 본인과 연결된 Node의 indgree 값을 하나 빼준다. -> edge를 지우는 것을 의미한다. 5. indgree가 0이 되는 Node..
-
Python 백준 1987번 - 알파벳 (시간 초과 해결)백준문제정리 2021. 6. 3. 16:44
문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다. 입력 첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1 ≤ R,C ≤ 20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있는 C개의 대문자 알파벳들이 빈칸 없이 주어진다. 출력..
-
Python 백준 10610번 - 30 (시간 초과 해결)백준문제정리 2021. 2. 4. 17:00
문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어 한다. 미르코를 도와 그가 만들고 싶어 하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 10^5개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 나의 생각 이 문제를 보고 몇 가지 조건들이 떠올랐다. 1. 30, 150, 180.. 이렇게 끝자리가 0으로 반드시 끝나야 한다는 것 2. 입력한 값의 자리 수보다는 배수가 될(출력) 것의 길이가 크거나 같아야 한다는 것 ..
-
Python 백준 9625번 - BABBA (시간 초과 해결)백준문제정리 2021. 1. 25. 23:41
문제 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어 있었다. 버튼을 누르니 글자가 B로 변했다. 한 번 더 누르니 BA로 바뀌고, 그다음에는 BAB, 그리고 BABBA로 바뀌었다. 상근이는 화면의 모든 B는 BA로 바뀌고, A는 B로 바뀐다는 사실을 알게 되었다. 버튼을 K번 눌렀을 때, 화면에 A와 B의 개수는 몇 개가 될까? 입력 첫째 줄에 K (1 ≤ K ≤ 45)가 주어진다. 출력 첫째 줄에 A의 개수와 B의 개수를 공백으로 구분해 출력한다. 나의 생각 이 문제는 단순히 A라는 문자를 B 로 바꾸고 B 라는 문자는 BA로 바꾸는 단순한 문제이다. 문제만 보면 단순하기 때문에 처음에는 자신있게 코딩..
-
Python 백준 8320번 - 직사각형을 만드는 방법 (시간 초과 해결)백준문제정리 2021. 1. 16. 00:58
문제 상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까? 두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 없으면, 두 직사각형은 다르다고 한다. 직사각형을 만들 때, 정사각형을 변형시키거나, 한 정사각형 위에 다른 정사각형을 놓을 수 없다. 또, 직사각형은 정사각형으로 꽉 차있어야 한다. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 만들 수 있는 직사각형의 개수를 출력한다. 나의 생각 처음에 1부터 8개 정도까지 그려보면서 어떤 경우가 될 수 있는지 확인을 해보았다. 우선 세로 로긴 직사각형은 일정하게 증가한다는 것을 알아내었고, 특별한 경우에만 개수가 더 증가한다는 것을 알았다. ..
-
Python 백준 10250번 - ACM호텔백준문제정리 2021. 1. 12. 12:23
문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와줄 프로그램을 작성하고자 한다. 즉 설문조사 결과대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 ..
-
Python 백준 14562번 - 나는 행복합니다~, (메모리 초과 해결)백준문제정리 2021. 1. 1. 00:16
문제 “나는 행복합니다~ 한화라서 행복합니다~” 행복한 이 노래 가사! 그렇다. 욱제는 한화 이글스의 열렬한 이다. 욱제는 여름방학을 맞아 치킨과 맥주를 챙겨 야구장을 방문했다! 하지만 이게 웬걸? 치맥에 정신이 팔린 욱제는 그만 자신의 관중석 위치가 담긴 티켓을 잃어버리고 말았다. 욱제가 유일하게 기억하는 것이라고는 자신의 관중석 번호 K뿐이다. 당신은 한화 이글스의 감독이다. 열혈 팬인 욱제의 방문에 깊은 감동을 받은 당신은 욱제가 잃어버린 자리를 찾아주려고 한다. 오늘 경기가 펼쳐지는 잠실구장은 세로 길이가 N, 가로길이가 M인 N*M 크기의 관중석을 가지고 있다. 관중석의 왼쪽 위는 (0, 0), 오른쪽 아래는 (N-1, M-1)으로 표시된다. 각 관중석에는 번호가 아래 그림처럼 매겨져 있다. (..
-
백준(Baekjoon)알고리즘 <문제번호 1011> - Fly me to the Alpha Centauri백준문제정리 2020. 4. 16. 17:40
문제 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 ..