본문 바로가기

728x90

파이썬

(171)
[프로그래머스] 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 ..
[백준] 1543번 문서 검색 [Python] 주어진 문자열에 그 다음 주어진 문자열이 중복 없이 몇 번 들어 있는지 구하는 문제 더보기 문제 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다. 세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어..
[백준] 10610번 30 [Python] - 정수 주어진 정수의 자리수를 바꾸어서 가장 큰 30의 배수 만들기 더보기 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 10의 배수 : 2와 5의 배수 >>> 일의 자리 수가 0인 수 3의 배수 : 각 자리수의 합이 3의 배수 12 > 1+2 = 3 234 > 2+3+4 =9 12..
[백준] 10825번 국영수 [Python] - 정렬 세 과목 점수와 이름 순서대로 정렬하는 문제 더보기 문제 도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오. 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서로 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 $($단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.$)$ 입력 첫째 줄에 도현이네 반의 학생의 수 N $($1 ≤ N ≤ 100,000$)$이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보..
[백준] 2578번 빙고 [Python] 5x5 빙고판$($1~25$)$에서 사회자가 불러주는 숫자를 지워가며 3 줄을 완성 시키는 게임 더보기 문제 빙고 게임은 다음과 같은 방식으로 이루어진다. 먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다 다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다. 차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다. 이러한 선이 세 개 이상 그어지는 순간 "빙고"라고 외치는데, 가장 먼저 외치는 사람이 게임의 승자가 된다. 철수는 친구들과 빙고 게임을 하고 있다. 철수가 빙고판에 쓴 수들과 사회자가 부르는 수의..
[백준] 1913번 달팽이 [Python] 숫자를 달팽이 모양을 그리며 순서대로 배치하고, 입력받은 숫자의 좌표를 구하는 문제 더보기 문제 홀수인 자연수 N이 주어지면, 다음과 같이 1부터 N2까지의 자연수를 달팽이 모양으로 N×N의 표에 채울 수 있다. 9 2 3 8 1 4 7 6 5 25 10 11 12 13 24 9 2 3 14 23 8 1 4 15 22 7 6 5 16 21 20 19 18 17 N이 주어졌을 때, 이러한 표를 출력하는 프로그램을 작성하시오. 또한 N2 이하의 자연수가 하나 주어졌을 때, 그 좌표도 함께 출력하시오. 예를 들어 N=5인 경우 6의 좌표는 $($4,3$)$이다. 입력 첫째 줄에 홀수인 자연수 N$($3 ≤ N ≤ 999$)$이 주어진다. 둘째 줄에는 위치를 찾고자 하는 N2 이하의 자연수가 하나 주어진다. 출..
[백준] 1269번 대칭 차집합 [Python] - 집합 대칭차집합$($Symmetric difference$)$ \begin{align}{A}\triangle{B} = ({A}\cup{B})\backslash({A}\cap{B}) \\=({A}\backslash{B})\cup({B}\backslash{A})\end{align} 더보기 문제 자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, $($A-B$)$와 $($B-A$)$의 합집합을 A와 B의 대칭 차집합이라고 한다. 예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로,..
[백준] 1002번 터렛 [Python] - 두 원의 위치 관계 두 원의 위치 관계: 일치, 두 점에서 만난다, 한 점에서 만난다$($접한다$)$, 만나지 않는다. 두 점 사이의 거리 $\sqrt{(x_{1}-x_{2})^2-(y_{1}-y_{2})^2}$ 삼각형의 성립 조건 세 변 a, b, c에 대하여$($가장 긴 변을 c라고 하자$)$ $c < a+ b$ 위 개념으로 교점의 존재성/ 개수 구했습니다. 더보기 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 $($x_1, y_1$)$와 백승환의 좌표..
[백준] 15654, 15655번 N과 M[5, 6] [Python] - 순열, 조합 N과 M$($1$)$, $($2$)$와 거의 같아서 링크와 코드만 올려봅니다. 15654번: N과 M (5) (acmicpc.net) import sys from itertools import permutations input = sys.stdin.readlin N, M = map(int, input().split()) li = sorted(list(map(int, input().split()))) pm = permutations(li, M) for p in pm: print(*p) 15655번: N과 M (6) (acmicpc.net) import sys from itertools import combinations input = sys.stdin.readline N, M = map(int, input..