본문 바로가기

728x90

프로그래머스

(43)
[프로그래머스] Lv.3 등산코스 정하기 [Python] N 개의 지점은 출입구, 쉼터, 산봉우리로 이루어져 있습니다. 이 문제에서 출입구에서 산봉우리를 하나만 거처 다시 출입구로 돌아가는 경로를 등산코스라고 정의합니다. 한 등산코스 내 각 지점 사이의 최대 소요시간을 해당 등산코스의 intensity라고 합니다. 가능한 등산코스 중 최소 intensity와 그 값을 갖는 산봉우리를 구하는 문제 더보기 문제 설명 XX산은 n개의 지점으로 이루어져 있습니다. 각 지점은 1부터 n까지 번호가 붙어있으며, 출입구, 쉼터, 혹은 산봉우리입니다. 각 지점은 양방향 통행이 가능한 등산로로 연결되어 있으며, 서로 다른 지점을 이동할 때 이 등산로를 이용해야 합니다. 이때, 등산로별로 이동하는데 일정 시간이 소요됩니다. 등산코스는 방문할 지점 번호들을 순서대로 나열하여 표현..
[프로그래머스] Lv.2 두 큐 합 같게 만들기 [Python] 두 개의 큐가 주어지면 다음 작업을 통해 각 큐의 합이 서로 같게 만드는 최소 횟수를 구하는 문제 작업: 한 큐의 첫 원소를 다른 큐의 마지막 원소로 옮기는 작업을 한 횟수로 취급 더보기 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출$($pop$)$하고, 추출된 원소를 다른 큐에 집어넣는$($insert$)$ 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면..
[프로그래머스] Lv.1 가장 가까운 같은 글자 [Python] - 문자열 주어진 문자열의 각 글자가 처음 나오면 -1, 이미 나온 글자는 바로 앞의 글자와의 거리를 리스트에 담아서 반환하는 문제 더보기 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는..
[프로그래머스] 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보다 ..
[프로그래머스] 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로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부..
[프로그래머스] Lv.1 콜라 문제 [Python] n개의 빈 병이 있고, a개의 빈 병당 콜라 b개를 돌려준다면, 총 몇개의 콜라를 받을 수 있을까? 더보기 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서..
자바 - 삼항연산자 , SWITCH문 삼항 연산자 조건식 ? 피연산자1 : 피연산자2 package javaStudy; public class OperatorExam4 { public static void main(String[] args) { /* 삼항 연산자 * 조건식 ? 피연산자1 : 피연산자2 * 조건식 == true >>> 피연산자 1 * 조건식 == false >>> 피연산자 2*/ int b1 = (5 < 4) ? 50 : 40; System.out.println(b1); // 위의 삼항연산자와 아래 if문이 같은 내용임 int b2 = 0; if (5 < 4) { b2 = 50; }else { b2 = 40; } System.out.println(b2); } } SWITCH문 switch(변수){ case 값1 : 실행문; b..
[프로그래머스] Lv.1 추억 점수 [Python] 더보기 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16$(5 + 10 + 1)$점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67$(11 + 1 + 55)$점입니다. 그리..
[프로그래머스] Lv.1 명예의 전당 1 [Python] 매일 투표되는 점수 중에 상위 k번째 까지만 명예의 전당에 오릅니다. 매일 명예의 전당의 최소 점수를 리스트로 반환하는 문제 점수가 k개 이하일 때까지는 모든 점수가 명예의 전당에 오릅니다. 더보기 문제 설명 "명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전..
[프로그래머스] Lv.1 카드 뭉치 [Python] 두 개의 단어 카드 뭉치에서 순서대로 단어를 꺼낼 때, 원하는 단어를 순서대로 만들 수 있는지 알아내는 문제 단어 카드 뭉치에는 충분한 단어가 있습니다. 단어를 꺼낼 대는 뭉치에 있는 순서대로만 가능합니다. 더보기 문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"],..
자바 입문 - if문, 논리 연산자 if 조건문 조건식의 연산 결과에 따라 블록 내부 문장의 실행 여부를 결정할 수 있다. 조건식이 true일 경우 실행문이 실행 된다. 실행문은 {중괄호}로 묶으면 여러 줄을 포함 할 수 있다. if(조건식){ 실행문; 실행문; } else if(조건식){ 실행문; } else{ 실행문; } if 조건식이 false일 경우 else if 조건식을 확인하고 else if 문은 제한 없이 추가할 수 있는데, true인 조건식의 실행문이 실행되면 이후 조건식은 살펴보지 않는다. else문은 생략해도 상관없으며, 앞선 모든 조건식이 false일 경우 실행된다. package javaStudy; public class IfExam { public static void main(String[] args) { int ..