본문 바로가기

728x90

IT/Python

(167)
[백준] 1904번 01타일 [Python] - 피보나치 수열 00과 1로 N자리수 이진수를 만드는 경우의 수 구하는 문제 $($경우의수를 15746로 나눈 나머지 출력$)$ 더보기 문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. $($01..
[백준] 1343번 폴리오미노 [Python] XXXX >>> AAAA XX > BB 위 방법으로 덮어쓴 문자열 출력하는 문제 더보기 문제 민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 1343번: 폴리오미노 (acmicpc.net) a=".".join(["AAAA"*(len(x)//4)+"B"*(len(x)%4) if len(x)%..
[백준] 2669번 직사각형 네 개의 합집합의 면적 구하기 [Python] - 도형 주어진 직사각형들이 차지하는 총 넓이 구하는 문제$($겹치는 구간 처리$)$ 더보기 문제 평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭짓점이 겹칠 수도 있다. 이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오. 2669번: 직사각형 네개의 합집합의 면적 구하기 (acmicpc.net) 100x100 크기의 판에 주어진 좌표 정보에 따라 직사각형이 차지하는 공간을 1로 아닌 공간을 0으로 채웠습니다. 한 직사각형의 가로가 x1 부터 x2 까지의 점을 가지고 있을 때 가로의 길이는 x2 - x1 - 1이라서 x1부터 x2-1까지를 그 직사각..
[백준] 1094번 막대기 [Python] - 이진법 64cm 막대기를 반으로 쪼개는 과정과 마지막에 이어 붙이는 과정만을 거쳐서 64보다 작거나 같은 Xcm의 막대기를 만드는 문제 마지막 이어 붙히는 과정에서 최소 막대기 갯수를 출력하면 됩니다. 더보기 문제 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면, 아래와 같은 과정을 반복한다. 가지고 있는 막..
[프로그래머스] Lv.0 평행 [Python] 4개의 점 중에서 2개씩 이어서 평행이 되는지 확인하는 문제 더보기 문제 설명 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항 dots의 길이 = 4 dots의 원소는 [x, y] 형태이며 x, y는 정수입니다. 0 ≤ x, y ≤ 100 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다. 두 직선이 겹치는 경우$($일치하는 경우$)$에도 1을 return 해주세요. 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지..
[프로그래머스] Lv.0 정수를 나선형으로 배치하기 [Python] 시계방향, 바깥에서 안으로 들어가는 나선 방향을 따라 숫자를 배치하는 문제 더보기 문제 설명 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 $n^2$ 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ n ≤ 30 nxn 행렬 생성 $($0,0$)$ 부터 조건에 따라 숫자를 배치하기 위해 초기값 $($0,0$)$ 설정 dr = $($0,1,0,-1$)$ : 0, 하, 0, 상 dc = $($1,0,-1,0$)$: 우, 0, 좌, 0 >>> 시계방향$($우, 하, 좌, 상$)$으로 이동 첫 바퀴는 각 방향마다 n-1 번씩 이동하면 한 바퀴를 돌아서 원자리로 돌아옵니다. 그래서 좌,하 방향으로..
[프로그래머스] Lv.0 옹알이[1] [Python] 발음 가능한 문자열만 사용해서 가능한 옹알이의 개수를 구하는 문제 발음 가능한 문자열 배열: ["aya", "ye", "woo", "ma"] $($각 문자열은 최대 1번 사용$)$ https://school.programmers.co.kr/learn/courses/30/lessons/120956 더보기 문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한$($이어 붙인$)$ 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ..
[프로그래머스] Lv.3 택시 요금 [Python] [문제] 지점의 개수 n, 출발지점을 나타내는 s, A의 도착지점을 나타내는 a, B의 도착지점을 나타내는 b, 지점 사이의 예상 택시요금을 나타내는 fares가 매개변수로 주어집니다. 이때, A, B 두 사람이 s에서 출발해서 각각의 도착 지점까지 택시를 타고 간다고 가정할 때, 최저 예상 택시요금을 계산해서 return 하도록 solution 함수를 완성해 주세요. 만약, 아예 합승을 하지 않고 각자 이동하는 경우의 예상 택시요금이 더 낮다면, 합승을 하지 않아도 됩니다. https://school.programmers.co.kr/learn/courses/30/lessons/72413 더보기 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 밤늦게 귀가할 때 안전을 위해 ..
[프로그래머스] Lv.2 두 원 사이의 정수 쌍 [Python] 2차원 직교 좌표계에서 중심이 원점인 서로 다른 크기의 두 원의 사이$($경계 포함$)$ 점 중에서 좌표가 모두 정수인 점의 개수를 구하는 문제 더보기 문제 설명 x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요. ※ 각 원 위의 점도 포함하여 셉니다. 제한 사항 1 ≤ r1 < r2 ≤ 1,000,000 접근 방법: x축의 양의 부분을 포함하여 1사분면 위의 점의 개수를 구한 후, 그 값의 4배를 출력 다음 두 구간 0 ≤ y < r1 과 r1 ≤ y < r2 으로 구분..
[프로그래머스] Lv.2 올바른 괄호 [Python] 주어진 숫자에서 k개의 digit을 빼서 가장 큰 수를 만드는 문제 더보기 문제 설명 괄호가 바르게 짝지어졌다는 것은 '$($' 문자로 열렸으면 반드시 짝지어서 '$)$' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "$()()$" 또는 "$(())()$" 는 올바른 괄호입니다. "$)()($" 또는 "$(()($" 는 올바르지 않은 괄호입니다. '$($' 또는 '$)$' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '$($' 또는 '$)$' 로만 이루어져 있습니다. 처음 작성 "$($"면..
[프로그래머스] Lv.2 큰 수 만들기 [Python] 주어진 숫자에서 k개의 digit을 빼서 가장 큰 수를 만드는 문제 더보기 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연..
[백준] 15904번 UCPC는 무엇의 약자일까? [Python] 주어진 문자열을 줄임말로 변형했을 때, 원하는 문자열이 될 수 있는지 확인하는 문제 더보기 문제 UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다. Union of Computer Programming Contest club contest Union of Computer Programming contest Club contest Union of Computer Programming contest club ..