We will find a way, we always have.

-interstellar

백준 90

[백준] 10026번: 적록색약 - 파이썬

🔈 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 예를 들어, 그림이 아래와 같은 경우에 RRRBB GGBBB BBBRR BBRRR RRRRR​ 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, 파랑 1, 초록 1) 하지만, 적록색약인 사람은 구역을 3개 볼 수 ..

[백준] 11688번: 최소공배수 찾기 - 파이썬

🔈 문제 세 정수 a, b, L이 주어졌을 때, LCM(a, b, c) = L을 만족하는 가장 작은 c를 찾는 프로그램을 작성하시오. LCM(a, b, c)는 a, b, c의 최소공배수이다. 📝입력 첫째 줄에 a, b, L이 주어진다. (1 ≤ a, b ≤ 106, 1 ≤ L ≤ 1012) 📑출력 첫째 줄에 c를 출력한다. 만약, 가능한 c가 없으면 -1을 출력한다. 📚 문제 해석 이전에 풀었던 최대 최대 최소공배수 찾기 문제와 비슷한 유형같아서 풀어보았다. 이번 문제는 a와 b 그리고 L 이 주어질 때 lcm(a,b,c) == L 을 만족하는 c의 최소값을 구하면 된다. 처음에 미리 a와 b의 최소공배수를 구한 다음 while 문을 돌려서 c의 값을 하나씩 올려 L을 찾았는데, TLE 판정 받았다. 그..

[백준] 25432번: 최대 최소공배수 - 파이썬

🔈 문제 1부터 N까지의 수가 있다. 최소공배수가 최대가 되도록 서로 다른 3개의 수를 선택해 보자. 📝입력 첫째 줄에 테스트케이스의 개수 T가 주어진다. (1≤T≤1000) 둘째 줄부터 T개의 줄에 각각 자연수 N이 주어진다. (3≤N≤100000) 📑출력 각 테스트케이스마다, 최소공배수의 최댓값을 한 줄에 하나씩 차례대로 출력한다. 📚 문제 해석 1부터 n 까지의 수 중에서 3개의 숫자를 골라 최소공배수를 구하는데, 이때 이 최소공배수가 최대가 되도록 3개의 숫자를 골라야 한다. 처음에는 n이 짝수라면 n과 n-1 그리고 n-3 의 최소공배수가, n이 홀수라면 n과 n-1 그리고 n-2의 최소공배수가 최대 최소공배수가 될거라고 생각했다. 숫자가 클수록 최소공배수가 커질 것이라고 생각했고, 짝수일때 n..

[백준] 1715번: 카드 정렬하기 - 파이썬

🔈 문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 2..

[백준] 9375번: 패션왕 신해빈 - 파이썬

🔈 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 📝입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. -각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다. -다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나 만 입을 수 있다. 모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가..

[백준] 13140번: Hello World! - 파이썬

🔈 문제 N이 주어질 때 hello + world = N을 만족하는 서로 다른 한 자리 자연수(0 포함) d, e, h, l, o, r, w를 구해서 아래 그림과 같은 형태로 출력하는 프로그램을 작성하여라. 단, h와 w는 0이 될 수 없다. 📝입력 첫 번째 줄에 양의 정수 N이 주어진다. N은 32비트 정수 범위로 표현할 수 있는 수만 들어온다. 📑출력 만약 답이 없으면 'No Answer'을 출력한다. 그렇지 않은 경우 가능한 답들 중에서 아무거나 출력한다. 📚 문제 해석 처음에는 l이 같은 위치에 있다는 것을 이용하여, n[-2]//2 로 l을 먼저 구한다음, n[-3] - l 을 통해 (2*l 에 캐리값이 있는지 확인후) r 을 구하고, o와 d는 for 문을 돌려 구한뒤, e를 구하고 마지막으로..

[백준] 17451번: 평행 우주 - 파이썬

🔈 문제 서기 2XXX년, 지구가 소행성과 충돌할 위기에 처했다! 똑똑한 과학자 키파는 평행 우주를 누비며 지구를 대신할 행성을 찾는 막중한 임무를 맡게 되었다. 우리는 현재 지구(=행성 0)에 있다. 여러 요인을 고려한 결과, 행성 1, 행성 2, …, 행성 (n-1)을 순서대로 확인하고 지구(=행성 n)에 돌아오는 것이 비용상 최적임을 알아냈다. 모든 정수 1 ≤ i speed: # speed보다 행성 속력이 크다면 speed = nums[i] # speed를 현재 행성 속력으로 업데이트 else: speed가 더 크거나 작다면 if speed%nums[i]: # 정수배가 되지 않는다면 speed = (speed//nums[i]+1) *nums[i] # 배수이면서 최소값으로 업데이트 print(spe..

[백준] 1260번: DFS와 BFS - 파이썬

🔈 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 📝입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 📑출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 ..

[백준] 17626번: Four Squares - 파이썬

🔈 문제 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 12으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이었다. 1900년대 초반에 한 암산가가 15663 = 1252 + 62 + 12 + 12라는 해를 구하는데 8초가 걸렸다는 보고가 있다. 좀 더 어려운 문제에 대해서는 56초가 걸렸다: 11339 = 1052 + 152 + 82 + 52.자연수 n이 주어질 때, n을 최소 개수의 제곱수 합으로 표현하는 컴퓨터 프로그램을 작성하시오. 📝입력 입력..

[백준] 11403번: 경로 찾기 - 파이썬

🔈 문제 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 📝입력 첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 📑출력 총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다. 📚 문제 해석 n개의 노드가 있고, n개의 줄에 걸쳐 인접 행렬이 주어질때, i에서 j로 가는 ..