Python 106

[Silver V] 방 번호 - 1475 (python)

문제 링크  문제 설명다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)입력첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.출력첫째 줄에 필요한 세트의 개수를 출력한다. 코드import mathn = input()arr = [0]*10for i in n: arr[int(i)] += 1arr[9] = math.ceil((arr[6] + ar..

알고리즘/백준 2024.09.08

[Silver V] 임시 반장 정하기 - 1268

문제 링크 분류구현 문제 설명오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다.그래서 오민식 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자. 위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며, 2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생..

알고리즘/백준 2024.09.06

[Silver II] 좌표 압축 - 18870 (JavaScript, Python)

문제 링크  분류값 / 좌표 압축, 정렬 문제 설명수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.입력첫째 줄에 N이 주어진다.둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.출력첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.  코드1. JavaScriptconst fs = require("fs");const input = fs.readFileSync("/dev/stdin").toStr..

알고리즘/백준 2024.07.10

[Silver I] 알고리즘 기말고사 - 10424 (python)

문제 링크  분류구현, 정렬 문제 설명상덕이의 기말고사가 코앞으로 다가왔다. 상덕이의 알고리즘 분반은 N명이 수강하고 있다. 알고리즘의 성적은 상대평가이기 때문에 동점자가 없으며, 각각의 학생들은 중간고사와 기말고사의 등수에 따라 만족도가 다르다. 중간고사 때 i등을 한 학생의 기말고사의 만족도 Ai는 다음과 같다.Ai = Bi - CiBi = (중간고사 때 자신보다 높은 등수를 받고 기말고사에는 자신보다 낮은 등수를 받은 학생의 수)Ci = (중간고사 때 자신보다 낮은 등수를 받고 기말고사에는 자신보다 높은 등수를 받은 학생의 수)예를 들어 5명의 학생들이 중간고사와 기말고사 때 각각 다음과 같은 성적을 받았다고 하자. 편의를 위해 학생들의 중간고사 성적을 기준으로 번호를 붙여보자. 예를 들어 중간고사..

알고리즘/백준 2024.07.10

[Silver I] 단축키 지정 - 1283 (python)

문제 링크  분류구현, 문자열 문제 설명한글 프로그램의 메뉴에는 총 N개의 옵션이 있다. 각 옵션들은 한 개 또는 여러 개의 단어로 옵션의 기능을 설명하여 놓았다. 그리고 우리는 위에서부터 차례대로 각 옵션에 단축키를 의미하는 대표 알파벳을 지정하기로 하였다. 단축키를 지정하는 법은 아래의 순서를 따른다.먼저 하나의 옵션에 대해 왼쪽에서부터 오른쪽 순서로 단어의 첫 글자가 이미 단축키로 지정되었는지 살펴본다. 만약 단축키로 아직 지정이 안 되어있다면 그 알파벳을 단축키로 지정한다.만약 모든 단어의 첫 글자가 이미 지정이 되어있다면 왼쪽에서부터 차례대로 알파벳을 보면서 단축키로 지정 안 된 것이 있다면 단축키로 지정한다.어떠한 것도 단축키로 지정할 수 없다면 그냥 놔두며 대소문자를 구분치 않는다.위의 규칙..

알고리즘/백준 2024.07.09

[Gold V] 경쟁적 전염 - 18405 (python)

문제 링크  분류너비 우선 탐색, 그래프 이론, 그래프 탐색, 구현 문제 설명NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다.시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다. 또한 증식 과정에서 특정한 칸에 이미 어떠한 바이러스가 존재한다면, 그 곳에는 다른 바이러스가 들어갈 수 없다.시험관의 크기와 바이러스의 위치 정보가 주어졌을 때, S초가 지난 후에 (X,Y)에 존재하는 바이러스의 종류를 출력하는 프로그램을 작성하시오. 만약 S초가 지난 후에 해당 위치에 바이러..

알고리즘/백준 2024.07.05

[Gold V] 공주님을 구해라! - 17836 (python)

문제 링크  분류너비 우선 탐색, 그래프 이론, 그래프 탐색 문제 설명용사는 마왕이 숨겨놓은 공주님을 구하기 위해 (N, M) 크기의 성 입구 (1,1)으로 들어왔다. 마왕은 용사가 공주를 찾지 못하도록 성의 여러 군데 마법 벽을 세워놓았다. 용사는 현재의 가지고 있는 무기로는 마법 벽을 통과할 수 없으며, 마법 벽을 피해 (N, M) 위치에 있는 공주님을 구출해야만 한다.마왕은 용사를 괴롭히기 위해 공주에게 저주를 걸었다. 저주에 걸린 공주는 T시간 이내로 용사를 만나지 못한다면 영원히 돌로 변하게 된다. 공주님을 구출하고 프러포즈 하고 싶은 용사는 반드시 T시간 내에 공주님이 있는 곳에 도달해야 한다. 용사는 한 칸을 이동하는 데 한 시간이 걸린다. 공주님이 있는 곳에 정확히 T시간만에 도달한 경우에..

알고리즘/백준 2024.07.05

[Silver I] 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유 - 17129 (python)

문제 링크  분류너비 우선 탐색, 그래프 이론, 그래프 탐색 문제 설명윌리암슨수액빨이딱따구리 세 식구가 정보섬에 올라왔다!세 윌리암슨수액빨이딱따구리는 정보섬 2층 어딘가에 모여 앉아 쉬고 있었는데, 저 멀리 청국장과 스시와 맥앤치즈가 있는 것을 발견했다! 아빠는 청국장, 엄마는 스시, 아이는 맥앤치즈가 먹고 싶다. 그래서 이 셋은 현위치로부터 가장 가까운 음식을 먹으러 가기로 했다.정보섬 2층은 An×m의 격자로 표현된다. 어떤 Ai,j가 0이면 빈 복도여서 지나갈 수 있고, 1이면 장애물로 막혀 지나갈 수 없다. 윌리암슨수액빨이딱따구리 식구는 2, 청국장은 3, 스시는 4, 맥앤치즈는 5이다. 윌리암슨수액빨이딱따구리는 단위 시간마다 한 칸, 상하좌우로 움직일 수 있다. 2, 3, 4, 5는 장애물이 아..

알고리즘/백준 2024.07.05

[Silver I] 현이의 로봇 청소기 - 30106 (python)

문제 링크  분류너비 우선 탐색, 플러드 필, 그래프 이론, 그래프 탐색 문제 설명현이의 방은 매우 지저분하다! 현이는 선물로 로봇 청소기를 받았고, 귀찮은 청소를 맡기기로 했다.로봇 청소기는 현이의 방을 1×1 크기의 정사각형으로 나누어져 있는 𝑁×𝑀 크기의 직사각형으로 인식한다.로봇 청소기는 한 영역을 청소하고 나서 상, 하, 좌, 우로 인접한 영역 중 하나로 이동한다. 현이의 방은 오래되어 마루가 울퉁불퉁하고, 쓰레기도 눌러붙어 각 영역마다 높이가 조금씩 다르다. 로봇 청소기는 높이 차이가 𝐾 초과인 두 영역 사이를 이동하면 고장이 날 수 있기 때문에, 높이 차이가 𝐾 이하인 영역 사이에서만 이동한다.현이는 외출하는 동안 로봇 청소기를 작동시키고 집에 돌아왔지만, 청소가 되지 않은 곳도 있는..

알고리즘/백준 2024.07.05

[Silver IV] 걷기 - 1459 (python)

문제 링크  분류많은 조건 분기, 수학 문제 설명세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (X, Y)에 위치한 집으로 가려고 한다. 세준이가 걸을 수 있는 방법은 두가지 인데, 하나는 도로를 따라서 가로나 세로로 한 블록 움직여서 이번 사거리에서 저 사거리로 움직이는 방법이고, 블록을 대각선으로 가로지르는 방법이 있다.세준이가 집으로 가는데 걸리는 최소시간을 구하는 프로그램을 작성하시오.입력첫째 줄에 집의 위치 X Y와 걸어서 한 블록 가는데 걸리는 시간 W와 대각선으로 한 블록을 가로지르는 시간 S가 주어진다. X와 Y는 1,000,000,000보..

알고리즘/백준 2024.07.05