프로그래머스 25

[프로그래머스 Lv3][자바] 양과 늑대

❓문제설명양과 늑대 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔍문제해석어떤걸 풀어야 할까?이진 트리가 주어지고, 각 지점 마다 양 또는 늑대가 있다.각 지점을 들리면 양 또는 늑대의 수가 더해진다.만약 늑대의 수가 양과 같거나 커진다면 모든 양은 늑대한테 잡하먹힌다.이럴때 최대한 많이 모을 수 있는 양의 수를 구하라.🧐문제풀이문제 풀이 구상처음에는 단순한 dfs문제라고 생각하고 문제를 풀었으나 계속 내가 도출한 값과 정답이 맞지 않았다.무슨 문제일까 하고 지문을 자세히 보니, 글쎄 이동을 할때 현재 지점의 하위로만 갈 수 있는게 아니라 아예 다른 노..

[프로그래머스 Lv3][자바] 거스름돈

❓문제설명거스름돈 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔍문제해석어떤걸 풀어야 할까?잔돈 금액과 화폐종류가 주어지면 화폐들을 이용해 잔돈을 거슬러 줄 수 있는 모든 방법을 구해라너무 큰 수가 나올 수 있으니 1,000,000,007을 나눈 나머지를 반환하라.🧐문제풀이문제 풀이 구상배열을 만들고 칸마다 해당 인덱스의 금액을 만들기 위해서는 몇개의 방법이 있는지 담는다.그 계산이 모두 끝난 후 배열[잔돈] 의 값을 정답으로 리턴한다.방법의 갯수를 찾기 위해서는 아래와 같이 생각해보았다.오름차순으로 화폐 한개씩 계산을 해본다. (기존 화폐들로 계산된 ..

[프로그래머스 Lv2][자바] 기능개발

❓문제설명기능개발 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔍문제해석어떤걸 풀어야 할까?개발건들의 현재 진척도와 하루동안 진행가능한 작업량(지문에서는 작업속도)이 주어진다. 개발건들은 순서대로 배포되어야하며, 앞선 개발건이 배포될 때 그 다음 개발건도 완성되었다면 같이 배포할 수 있다.배포할때 마다  몇 건의 개발건이 반영되는 지를 구해라.🧐문제풀이문제 풀이 구상맨 앞 순서의 개발건의 100%가 될 날짜를 구한다.남은 개발건들에게 날짜 * 작업속도를 구한 뒤 더한다.100% 이상인 개발건은 poll하여 같이 배포하도록 한다. 알고리즘 선택순서대로 배..

[프로그래머스 Lv3][자바] 합승 택시 요금

❓문제설명합승 택시 요금 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍문제해석어떤걸 풀어야 할까?각 지점과 그 지점을 오가는 간선에 택시 요금이 주어진다.무지와 어피치는 택시 비용을 줄이기 위해 합승을 하기로한다. 그렇게 합승을 했을때 발생하는 택시비용 중 가장 최소금액을 구해라. 만약 합승 하는 것보다 각자의 도착지점을 향하는게 더 적은 요금이 든다면, 그 값을 리턴해라.🧐문제풀이문제 풀이 구상각 지점과 간선의 비용이 주어진 것을 보아 인접리스트를 생각하였다.근데 그 인접리스트를 이용해 어떻게 최소 금액을 구해야할지는 생각하지 못하고, 참고할 만한 블..

[프로그래머스 Lv2][JAVA] 무인도 여행

❓문제설명무인도 여행 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍문제해석어떤걸 풀어야 할까?바다에 떠있는 섬들의 각 식량합을 구하자.이차원배열에 "X"값이 있는 칸은 바다고 그 외의 칸들은 섬이다.섬의 칸에는 숫자가 있고 그 숫자를 모두 더하면 그게 하나의 섬의 식량합이다.만약 방문할 수 있는 섬이 없다면 배열에 -1을 담아서 리턴🧐문제풀이문제 풀이 구상섬의 식량값을 다 더하려면 아무래도 이중for문을 사용해야 하긴하다.하지만 모든 배열을 다 방문한다면 무조건 시간초과가 될 것이다.그 점을 방지하기 위해 한번 방문한 섬은 모두 "X"를 대입해서 바다로..

[프로그래머스 Lv2][JAVA] 게임 맵 최단거리

❓문제설명게임 맵 최단거리 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍문제해석어떤걸 풀어야 할까?mxn의 이차원 배열에서 상대방 위치까지 도달하는 데에 최소거리를 구하자.나의 시작 위치는 0,0 ,  상대방 위치는 m-1,n-1 로 고정되어있다.상하좌우 방향으로 이동할 수 있으며 한칸 이동시 거리가 +1 된다.mxn의 이차원 배열에서 값이 1인 칸만 이동 가능하다. 0은 장애물이다.🧐문제풀이문제 풀이 구상이동 가능한 지점과 현재 거리를 queue에 담는다. queue에서 하나 poll()하여 해당 지점에서 상하좌우로 예상 이동 지점을 계산해보고 그 지..

[프로그래머스 Lv2][JAVA] 당구 연습

❓문제설명당구 연습 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍 문제해석어떤걸 풀어야 할까?시작공과 목표공이 있을때 시작공이 목표공의 위치로 도달하는 거리 중 최소값의 제곱을 구해라.시작공이 목표공 위치로 가기 위해서는 벽을 한번 부딪히는 원쿠션을 이용해야한다. 벽에 부딪힐 때, 입사각 반사각은 동일하다.🧐 문제 풀이이거 너무 어려운데 레벨2 맞나요ㅜㅜ진짜 의욕 와장창 꺾인다.하지만 카피라도 해서 익혀야지..ㅎㅎ 어떡해 뭐참고 블로그 : https://ksb-dev.tistory.com/292 벽에 부딪힐 때, 입사각 반사각은 동일하는 걸 이용해서 시..

[프로그래머스 Lv2][JAVA] 리코쳇 로봇

❓문제설명리코쳇 로봇 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔍 문제해석어떤걸 풀어야 할까?시작위치에서 도착 위치까지 도달하는데에 최소 이동 횟수를 구하자상하좌우로 이동 가능한데, 장애물을 만나거나 배열의 범위를 넘어가지 않으면 한방향으로 쭉 이동이 가능하고, 그게 한번의 이동횟수로 카운트 된다.만약 도착지점에 도달하지못한다면 -1을 리턴한다.🧐 문제 풀이문제 풀이 구상시작지점으로 부터 상하좌우로 미끄러진다는 개념을 코드화 해야한다.상하좌우 네 방향으로 움직이는 걸 계산하되 장애물이나 배열의 끝을 만나지 않는다면 계속 한 방향으로 이동하도록 한다...

[프로그래머스 Lv2][JAVA] 광물캐기

❓문제설명광물캐기 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍 문제해석어떤걸 풀어야 할까?곡괭이로 광물을 캐면 피로도가 쌓인다. 광물을 다 캤을때 가장 적게 쌓일 수 있는 피로도를 구하자곡괭이는 3개의 종류가 존재하고 곡괭이마다 광물을 캐는데에 쌓이는 피로도가 다르다.한개의 곡괭이는 5번의 광물캐기를 하면 소멸되면서 더이상 사용 할 수 없다.🧐 문제 풀이풀이 전략 구상참고 블로그 : https://kjk04021.tistory.com/124 각 곡괭이들이 각각 광물을 캐는 모든 경우의 수를 보아야하기 때문에 재귀로 생각하였다.  돌 강한 곡괭이가 그보..

[프로그래머스 Lv2][JAVA] 과제 진행하기

❓문제설명과제 진행하기 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 과제를 받은 루는 다음과 같은 순서대로 과제를 하려고 계획을 세웠습니다.과제는 시작하기로 한 시각이 되면 시작합니다.새로운 과제를 시작할 시각이 되었을 때, 기존에 진행 중이던 과제가 있다면 진행 중이던 과제를 멈추고 새로운 과제를 시작합니다.진행중이던 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춰둔 과제를 이어서 진행합니다.만약, 과제를 끝낸 시각에 새로 시작해야 되는 과제와 잠시 멈춰둔 과제가 모두 있다면, 새로 시작해야 하는 과제부터 진행합니다.멈춰둔 과제가 여러 개일 경우, 가..

728x90
반응형