본문 바로가기

728x90

IT/Python

(167)
[프로그래머스] Lv.1 가장 가까운 같은 글자 [Python] - 문자열 주어진 문자열의 각 글자가 처음 나오면 -1, 이미 나온 글자는 바로 앞의 글자와의 거리를 리스트에 담아서 반환하는 문제 더보기 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는..
[백준] 11403번 경로 찾기 [Python] - DFS, BFS, 플로이드–워셜 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 $(i, j)$에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 문제 플로이드–워셜, dfs, bfs를 사용한 코드들을 작성해봤습니다. 더보기 문제 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 $(i, j)$에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N $(1 ≤ N ≤ 100)$이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 출력 총 N개의 줄에 걸쳐서 문제..
[프로그래머스] Lv.1 문자열 내 마음대로 정렬하기 [Python] - 문자열 문자열로 구성된 리스트와 정수 n이 주어질 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬, n 번째 글자가 같은 경우 사전순 정렬하는 문제 더보기 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 ..
[백준] 15656, 15657번 N과 M[7, 8] [Python] - 중복 순열, 중복 조합 백준 문제 사이트 N과 M[7] N과 M[8] N과 M[3], N과 M[4]에서는 1~N까지 자연수로 이루어진 길이가 M인 수열을 출력했다면, N과 M[7], N과 M[8]은 주어진 N개의 자연수로 이주어진 길이가 M인 수열을 출력하는 문제입니다. 주어진 자연수를 정렬하고, 속도를 높이기 위해 문자로 변환 후, 중복 순열, 중복 조합의 경우를 구하고 출력하는 코드입니다. product, combinations_with_replacement의 반환 값은 튜플 형태의 원소를 지니고 있어서, 튜블 내 원소를 ' '$($공백$)$으로 이어 붙인 후 join 매소드로 줄바꿈으로 문자를 이어 붙였습니다. N과 M[3], N과 M[4] 리뷰 https://savvy0402.tistory.com/6 https://sa..
[백준] 6064번 IOIOI [Python] - 문자열 N+1 개의 I 사이에 N개의 O가 들어있는 문자열 $P_N$ : IOIOIOIO...IOI에 대해서 N이 주어질 때 I와 O로만 이루어진 길이가 M인 문자열에서 $P_N$이 몇 번 포함되는지 세는 문제 IOIOIOI에는 IOI가 3번 포함됨. 더보기 문제 N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 $P_N$이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI $($O가 N개$)$ I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. 출력 S에 $P_N$이 몇 군..
[백준] 1009번 분산처리 [Python] 10대의 컴퓨터로 분산 처리를 진행한다. $a^b$개의 데이터를 처리할 때, 1번 데이터 > 1번 컴퓨터, 2번 데이터 > 2번 컴퓨터, ... , 10번 데이터 > 10번 컴퓨터, 11번 데이터 > 1번 컴퓨터, 12번 데이터 > 2번 컴퓨터, ... 위와 같은 방법으로 처리함 총 데이터 개수가 주어질 때, 마지막 데이터를 처리하는 컴퓨터 번호를 출력하는 문제 더보기 문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는..
[백준] 1004번 어린 왕자 [Python] 출발점, 도착점이 주어질 때, 최소한의 행성을 거쳐서 가는 방법을 구하는 문제 행성들의 중심과 반지름이 주어지고, 행성의 이탈 및 진입 횟수를 합산해서 최소가 되는 값을 출력하면 된다. 더보기 문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. ..
[백준] 2178번 미로 탐색 [Python] - BFS NxM 크기의 미로에서 $($1,1$)$ 에서 $($N,M$)$로 가는데 지나야하는 최소 칸 수를 구하는 문제 1은 이동 가능, 0은 이동 불가 칸을 의미 더보기 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, $(1, 1)$에서 출발하여 $(N, M)$의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 $(N, M)$의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도..
[프로그래머스] Lv.1 두 개 뽑아서 더하기 [Python] 주어진 정수 배열에 서로 다른 인덱스에 있는 두 수의 합을 모두 모아 오른차순을 정렬한 리스트를 반환하는 함수 만들기 더보기 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. https://school.programmers.co.kr/learn/courses/30/lessons/68644 이중 for문으로 인덱스가 다른 두 원소를 꺼내 그 합을 집합에 저장 >>> 중복 제거 sorted$($$)$로 정렬된 리스트로 ..
[프로그래머스] Lv.1 푸드 파이트 대회 [Python] 준비된 음식 별 양이 담긴 리스트가 주어질 때, 1:1로 치뤄지는 푸드 파이트 대회에서 한 선수는 왼쪽에서 가운데로, 다른 선수는 오른쪽에서 가운데로 차려진 음식을 먹고 가운데에 놓인 물을 먼저 마시는 선수가 승리합니다. 음식 리스트의 첫번째 음식은 물이고 그 값은 항상 1입니다. 이후로 칼로리가 적은 순으로 음식의 양이 리스트에 담겨 있습니다. 칼로리가 적은 음식부터 시작해서 같은 양의 음식을 두 선수가 같은 순서로 먹을 수 있도록 음식을 나열하는 문제 더보기 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부..
[백준] 2667번 단지번호붙이기 [Python] - DFS, BFS NxN 지도에 1은 집이 있는 곳, 0은 집이 없는 곳을 나타냄 상하좌우로 연결된 집의 모임을 단지라고 함 단지의 개수와 각 단지별 집의 수를 오름차순으로 정렬해 출력하는 문제 더보기 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N$($..
[프로그래머스] Lv.1 콜라 문제 [Python] n개의 빈 병이 있고, a개의 빈 병당 콜라 b개를 돌려준다면, 총 몇개의 콜라를 받을 수 있을까? 더보기 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서..