[Python] 백준/BOJ 19538번: 루머 (Gold 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 당신은 루머를 믿는가?한 유명 심리학 실험에서는 사람들에게 두 개의 줄을 보여주고, 어떤 줄이 더 긴지 말하라 했다. 사실 한 사람을 제외하고 나머지는 실험자에 의해 사전에 조작된 사람들이었다. 조작된 사람들은 사실상 더 짧은 줄을 더 길다고 말했다. 주변 모두가 같은 답변을 하자, 진짜 피실험자 또한 짧은 줄이 더 길다고 말했다. 이 실험은 사람들이 주변인의 영향을 강하게 받는다는 것을 보여주었는데, 루머도 이와 같다.루머는 최초 유포자로부터 시작한다. 최초 유포자는 여러 명일 수 있고, 최초 유포자를 제외하고 스스로 루머를 만들어 믿는 사람은 없다.매분 루머를 믿는 사람은 모든 주변인에게 루머를 동시에 퍼트리며, 군중 속 사람은 주변인의 절반 이상이 루머를 믿을 때 ..
[Python] 백준/BOJ 13700번: 완전 범죄 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 홍익대학교 근처에 있는 오락실에 새로운 게임이 들어왔다. 이 게임을 클리어하려면 방금 막 금은방을 턴 마포구 대도 X가 되어 아무에게도 들키지 않고 X의 집에 무사히 도착해야 한다. 게임은 오직 좌우 버튼 두 개로만 진행되고 규칙은 아래와 같다.마포구의 모든 건물은 일렬로 나열되어 있고 각 건물에는 1번부터 N번까지 번호가 지정되어 있다. 마포구에는 K개의 경찰서가 있고 경찰 내부에는 이미 X의 얼굴이 알려졌다.게임이 시작될 때 X는 막 범행을 끝내고 금은방 S 안에 있다.X는 자신의 집 D에 마포구를 떠날 수 있는 비밀 통로를 만들어놓았다. 따라서 경찰에게 발각되지 않고 무사히 집으로 돌아가야 한다.좌(←) 버튼을 누르면 후방으로 달리고, 우(→) 버튼을 누르면 전방으..
[Python] 백준/BOJ 17086번: 아기 상어 2 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N×M 크기의 공간에 아기 상어 여러 마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 아기 상어가 최대 1마리 존재한다.어떤 칸의 안전 거리는 그 칸과 가장 거리가 가까운 아기 상어와의 거리이다. 두 칸의 거리는 하나의 칸에서 다른 칸으로 가기 위해서 지나야 하는 칸의 수이고, 이동은 인접한 8방향(대각선 포함)이 가능하다.안전 거리가 가장 큰 칸을 구해보자. 💡 Approach상어의 위치를 기준으로 bfs를 퍼뜨려서 모든 칸의 안전 거리를 구하고 해당 배열의 칸들을 검사해서 안전 거리가 가장 큰 칸을 찾아 출력하도록 했다. 먼저 상어들의 위치를 찾아서 sharks 배열에 위치를 기억하고 보드의 상어 칸을 -1로 초기화한다.빈 칸은 모두..
[Python] 백준/BOJ 3197번: 백조의 호수 (Platinum 5)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 두 마리의 백조가 호수에서 살고 있었다. 그렇지만 두 마리는 호수를 덮고 있는 빙판으로 만나지 못한다.호수는 행이 R개, 열이 C개인 직사각형 모양이다. 어떤 칸은 얼음으로 덮여있다.호수는 차례로 녹는데, 매일 물 공간과 접촉한 모든 빙판 공간은 녹는다. 두 개의 공간이 접촉하려면 가로나 세로로 닿아 있는 것만 (대각선은 고려하지 않는다) 생각한다.아래에는 세 가지 예가 있다....XXXXXX..XX.XXX ....XXXX.......XX .....XX.......... ....XXXXXXXXX.XXX .....XXXX..X..... ......X.......... ...XXXXXXXXXXXX.. ....XXX..XXXX.... .....X.....X..... ..XXX..
[Python] 백준/BOJ 9019번: DSLR (Gold 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 네 개의 명령어 D, S, L, R을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 저장된 n을 다음과 같이 변환한다. n의 네 자릿수를 d1, d2, d3, d4라고 하자(즉 n = ((d1 × 10 + d2) × 10 + d3) × 10 + d4라고 하자)D: D는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다.S: S는 n에서 1을 뺀 결과 n-1을 레지스터에 저장한다. n이 0이라면 9999 가 대신 레지스터에 저장된다.L: L 은 ..
[Python] 백준/BOJ 2667번: 단지번호붙이기 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기  과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.  💡 Approachn * n 배열의 각 칸을 살펴보며 집이 있으면 bfs로 연결 개수를 찾는다.bfs 탐색이 끝나면 연결 개수를 res 리스트에 삽입한다.모든 칸을 탐색한 후에 res의 길이와..
[Python] 백준/BOJ 21736번: 헌내기는 친구가 필요해 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 도연이가 다니는 대학의 캠퍼스는 N×M 크기이며 캠퍼스에서 이동하는 방법은 벽이 아닌 상하좌우로 이동하는 것이다. 도연이가 이동할 수 있는 곳은 상하좌우이다. 단, 캠퍼스의 밖으로 이동할 수는 없다.불쌍한 도연이를 위하여 캠퍼스에서 도연이가 만날 수 있는 사람의 수를 출력하는 프로그램을 작성해 보자. O는 빈 공간, X는 벽, I는 도연이, P는 사람이다.  💡 Approach먼저 도연이의 위치를 찾고 시작점으로 잡아 bfs를 돌린다.4방향을 탐색할 때, 범위를 벗어나지 않고 벽이 아니면 이동할 수 있다.이때, 탐색하려는 칸이 사람이면 cnt에 1을 더한다.출력할 때는 삼항연산자를 써도 되지만, or를 쓰면 cnt가 0일 때 'TT'를 출력했다. ✏️ Solutioni..
[Python] 백준/BOJ 6593번: 상범 빌딩 (Gold 5)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져 있다. 각 정육면체는 금으로 이루어져 있어 지나갈 수 없거나, 비어있어서 지나갈 수 있게 되어있다. 당신은 각 칸에서 인접한 6개의 칸(동,서,남,북,상,하)으로 1분의 시간을 들여 이동할 수 있다. 즉, 대각선으로 이동하는 것은 불가능하다. 그리고 상범 빌딩의 바깥면도 모두 금으로 막혀있어 출구를 통해서만 탈출할 수 있다.당신은 상범 빌딩을 탈출할 수 있을까? 만약 그렇다면 얼마나 걸릴까? 💡 Approach🙊 스스로 헷갈릴까 봐 쓰는 z, y, x 표기에 대한 주절주절..더보기더보기나는 여태까지 행을 x 좌표, 열을 ..