본문 바로가기

728x90

파이썬

(171)
[프로그래머스] Lv.1 숫자 짝꿍 [Python] 두 수의 공통된 숫자를 그 공통된 개수만큼 가져와 가장 큰수를 만드는 문제 더보기 문제 설명 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. 예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5..
[프로그래머스] Lv.1 문자열 나누기 [Python] - 문자열 규칙에 따라 문자열을 나누고, 분해된 문자열의 개수를 구하는 문제 규칙 - 첫 글자부터 같은 글자와 다른 글자 수를 세어나가서, 두 수가 같아지만 분해 남은 문자열부터 똑같은 방식으로 진행 더이상 남은 문자열이 없고, 현재 진행중인 게 있다면 그 문자열 덩어리로 분해 더보기 문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 ..
[백준] 17176번 암호해독기 [Python] - 아스키코드 0은 띄어쓰기, 1 - 26 범위 안의 수는 A ~ Z, 27 - 52 범위 안의 수는 a ~ z로 해석 평문을 암호화해서 주어진 암호문을 만들 수 있는지 확인하는 문제 더보기 문제 방금 도착한 암호문을 해독했는데, 해독에 오류가 없는지 확인해보려 한다. 해독한 문장이 암호문을 해석한 결과로 나올 수 없다면, 그 해독은 잘못된 것이다. 암호문은 0 이상 52 이하의 정수로 이루어져 있다. 0은 띄어쓰기, 1 - 26 범위 안의 수는 A ~ Z, 27 - 52 범위 안의 수는 a ~ z로 해석된다. 암호문은 띄어쓰기를 포함한 모든 철자를 이와 같이 정수로 치환한 후 순서를 무작위로 뒤섞어서 만들어졌다. 입력 첫 번째 줄에는 주어질 수열의 길이 N이 주어진다. $(1 ≤ N ≤ 100,000)$ 두 번째 줄..
[백준] 12981번 공 포장하기 [Python] - 그리디 세가지 색깔의 공이 있고, 공을 담는 최소 박스 개수 구하는 문제 1 박스에 공은 1,2 또는 3개를 넣을 수 있습니다. 모두 같은 색으로 넣거나 모두 다른 색으로 넣어야 합니다. 더보기 문제 빨간 공 R개, 초록 공 G개, 파란 공 B개를 가지고 있다. 오늘은 이 공을 박스로 포장하려고 한다. 박스에는 공이 1개, 2개, 또는 3개 들어갈 수 있다. 박스에 들어가는 공의 색은 모두 다르거나, 모두 같아야 한다. 필요한 박스 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 R, G, B가 주어진다. $(1 ≤ R, G, B ≤ 100)$ 출력 첫째 줄에 필요한 박스 개수의 최솟값을 출력한다. 12981번: 공 포장하기 $($acmicpc.net$)$ 모두 같은 색으로 3개씩 $($3으로 나..
[백준] 22993번 서든 어택 3 [Python] - 그리디 공격력이 강한 사람이 약한 사람과 전투를 치르면 이기면서 상대방의 공격력을 갖는다. $($지면 끝, 동점은 아무 일도 일어나지 않음$)$ 전투 순서가 운이 좋아서 이길 수 있다면 Yes, 어떠한 경우에도 이길 수 없다면 No를 출력하는 문제 더보기 문제 지스타를 준비하기 시작한 작년 여름 이후 CBT와 런칭 준비를 한 오늘까지. 평일 저녁에 가족이 깨어 있는 것을 거의 본 적이 없다. 이제 본격적인 정식오픈을 이틀 앞 둔 오늘. 바람소리와 스산한 빗소리가 사무실 창밖을 때린다. 폭풍전야. 블라인드에서 서든3을 비웃던, 지금도 비웃는 이들에게 반박글을 달지 않았다. 니들이 허접한지, 우리가 허접한지는 결과가 말해줄 것이다. 넥슨의 게임 개발자 준원이는 서든어택 3의 출시를 앞두고 게임 테스트를 하고 있다...
[백준] 17451번 평행 우주 [Python] - 그리디 이동할 행성마다 빠져나가기 위해 요구하는 최소 속도가 있다. 출발하면 속도를 유지하거나 늦추기만 가능하며, 최소 속도의 정수배일 때만 그 행성을 지나갈 수 있다. 모든 행성을 지나가기 위한 최소 출발 속도를 구하는 문제 더보기 문제 서기 2XXX년, 지구가 소행성과 충돌할 위기에 처했다! 똑똑한 과학자 키파는 평행 우주를 누비며 지구를 대신할 행성을 찾는 막중한 임무를 맡게 되었다. 우리는 현재 지구$($=행성 0$)$에 있다. 여러 요인을 고려한 결과, 행성 1, 행성 2, …, 행성 $($n-1$)$을 순서대로 확인하고 지구$($=행성 n$)$에 돌아오는 것이 비용상 최적임을 알아냈다. 모든 정수 1 ≤ i
[이미지] 번호판 생성 [Python] - cv2, PIL 2006년 이전쯤 기준 차량 번호판 생성 도시와 문자 숫자를 랜덤으로 선택 높이, 너비 정보를 구하고 정보를 넣을 좌표 구하기 PIL 이미지로 문자를 이미지에 넣기 # 문자를 이미지에 넣기 위해 PIL 파일로 변환 과정 필요 # Image.fromarray()에 변경할 이미지를 입력 # 문자를 삽입하기 위해 ImageDraw.Draw()에 PIL 이미지로 변환된 파일을 입력 # draw.text()에 시작 좌표(가로, 세로), 문자, 색상, 폰트.. 등등을 입력 final_img = Image.fromarray(org_img) draw = ImageDraw.Draw(final_img) draw.text((450, 150), upper_str, (255,255,255), font=font_u) 번호판 10..
[백준] 25706번 자전거 묘기 [Python] - 다이나믹 자전거를 타고 점프대를 지나면 그 높이만큼 칸을 건너 뛴다. 1번칸부터 N번칸 까지 자전거를 타고 출발할 때, 지나가게 되는 칸의 수를 구하는 문제 더보기 문제 길이가 N미터인 직선 자전거 도로가 있다. 도로는 길이가 1미터인 N개의 칸으로 구분되어 있고, 가장 왼쪽에 있는 칸부터 순서대로 1번 칸, 2번 칸, …, N번 칸이다. 도로의 각 칸에는 점프대가 설치되어 있을 수 있다. i$($1 ≤ i ≤ N$)$번 칸에 설치된 점프대의 높이를 hi라고 하자. 높이가 hi인 점프대를 밟으면 그 어떤 요인과도 관계없이 다음 hi칸 위를 비행한 뒤 그다음 칸에 착지한다. 다음 예시를 확인해 보자. 자전거를 타고 1번 칸에서 출발해 앞으로 달리면 다음과 같은 일들이 순서대로 일어난다. 1번 칸에 점프대가 없으므로..
[백준] 14717번 앉았다 [Python] 1~10 숫자 카드 2벌, 총 20장의 카드 2장 중복 없이 뽑아서 같은 수면 땡, 다른 수면 끗 $($땡이 끗보다 더 강하다$)$ 땡은 그 숫자 크기끼리 비교해서 큰 수가 더 강하고, 끗은 두 수의 합의 일의 자리 숫자가 크면 더 강하다. 내가 뽑은 숫자 두 장을 보고, 상대방의 카드는 모를 때, 내가 이길 확률을 구하는 문제 더보기 문제 섰다는 화투를 이용하여 20장의 카드를 가지고 2명 이상이 경기를 하는 게임이다. 이러한 섰다의 규칙을 단순화한 게임이 바로 '앉았다'이다. 앉았다의 규칙은 1, 2, 3, ... , 9, 10이 쓰인 카드가 각 2장씩 주어지며 총 20장의 카드가 사용되며, 2명이 참가한다. 다음은 앉았다의 경기 방법이다. 두 명의 참가자는 순서대로 20장의 카드 중 무작위로 2장의..
[백준] 1347번 미로 만들기 [Python] - 정렬 주어진 좌,우,직진 정보만으로 미로를 그리는 문제 지나간 길을 '.'로 표현하고, 벽은 그 길을 포함하는 가장 작은 직사각형만으로 '#'로 채우기 더보기 문제 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍준이는 미로에서 모든 행과 열의 이동할 수 있는 칸을 걸어다녔다. 그러면서 자신의 움직임을 모두 노트에 쓰기로 했다. 홍준이는 미로의 지도를 자기 노트만을 이용해서 그리려고 한다. 입력으로 홍준이가 적은 내용을 나타내는 문자열이 주어진다. 각 문자 하나는 한 번의 움직임을 말한다. ‘F’는 앞으로 한 칸 움직인 것이고, ‘L'과 ’R'은 방향을 왼쪽 또는 오..
[백준] 14729번 칠무해 [Python] - 정렬 소수점 셋째짜리까지 표시된 점수들 중 낮은 점수 7개 오름차순으로 출력 더보기 문제 조$($Joe$)$는 중앙대학교 교수이고, 논리회로 설계 과목을 담당하고 있다. 그는 수업을 하면서 7명의 학생을 제외한 나머지 학생들에게 좋은 학점을 주겠다고 약속을 하였다. Joe 교수님을 돕기 위해서 학생들의 최종 성적이 주어질 때, 그의 연구실인 You See Lab으로 데려갈 성적이 좋지 못한 7명의 학생, 칠무해의 성적을 뽑아보자. 입력 첫째 줄에 학생의 수 N$(8 ≤ N ≤ 10,000,000)$이 주어진다. 둘째 줄부터 N개의 줄에는 학생들의 성적이 무작위로 주어진다. 성적은 최소 0점부터 최대 100점까지 0.001 점 단위로 부여된다. 출력 하위 7명의 성적을 점수가 낮은 순으로 각 줄마다 출력한다. ..
[프로그래머스] Lv.1 크레인 인형뽑기 게임 [Python] - 스택 인형과 인형의 위치 정보가 담긴 2차원 리스트 인형 뽑기 할 열의 좌표를 가진 리스트 위의 두 리스트에 따라서 각 열의 맨 위의 인형을 뽑고$($그 열에 인형이 없으면 아무 일도 일어나지 않는다.$)$ 뽑은 인형을 바구니에 순서대로 쌓는데, 똑같은 인형이 들어오면 그 두 개의 인형은 사라진다. 사라진 인형의 수를 구하는 문제! 더보기 문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. $($위 그림은 "5 x 5" 크기의 ..