목록알고리즘/프로그래머스 (183)
쌓고 쌓다
https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법우선 경기 결과로 확실하게 순위를 알 수 있는 경우는 다음과 같다. 사람이 N명일때나를 이긴 사람들 수와 나에게 진 사람들의 수가 N-1일때, 나의 순위는 (나를 이긴 사람들 수 + 1)위 이다. 그런데 여기서 더 생각해볼 수 있는 부분은 다음과 같다.나를 이긴 사람들 (간접적으로 이긴 사람들이다.)내가 진 사람들을 이긴 사람들 또한 나를 이긴 사람들이다.내가 진 사람을 이겼다는것은 나를 이..
https://school.programmers.co.kr/learn/courses/30/lessons/132266#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법최단 거리를 구하는 BFS 문제이다.부대에서 BFS 탐색을 시작하면 된다. 전체 코드import java.util.*;class Solution { class Node { int num; Node(int num) { this.num = num; } } public int[] solu..
https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법버스가 도착할때 탑승 가능인원만큼 버스에 탑승한다.사람들을 탑승 시키는 방법은timetable을 오름차순으로 정렬하고탑승 가능한 시각이라면 ( 버스 도착 시각보다 일찍 도착한 사람) 탑승 시킨다. 내가 가장 늦게 버스를 타는 방법은막차 버스에 마지막 여석에 내가 타면 된다. 막차 버스에 대기중인 사람이 없다면막차 버스 도착 시각에 탄다. 막차 버스에 대기중인 사람이 있다면마지막 탑승 사람보다..
https://school.programmers.co.kr/learn/courses/30/lessons/12904#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법팰린드롬의 길이를 "1 ~ s의 길이"로 설정해 놓고 반복문을 통해시작 위치부터 종료 위치까지 팰린드롬인지 확인하면 된다. 전체 코드import java.util.*;class Solution{ public int solution(String s) { int answer = 0; for(int i=s.length(); i>=1; i--)..
https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법[i][j] 위치 방문할때 현재 [i][j] 위치에 도착하는데 드는 비용보다 크더라도방향이 운 좋게 맞아 떨어져서 추후에 경주로 끝에 도달하는데 더 작은 비용이 될 수 있다.그래서 3차원 배열 [i][j][방향]으로 [i][j] 위치에 어떤 방향으로 방문을 했으며 드는 최소 비용을 기록하면서 방문해야한다. 전체 코드import java.util.*;class Solution { ..
https://school.programmers.co.kr/learn/courses/30/lessons/43238#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법우선순위 큐 방식을 생각했지만 O(N)으로 시간초과가 난다. 더 빠른 방법이 있을까... 이걸 어떻게 이진탐색으로 푼다는건지 신기하다.. 이진 탐색 풀이 방법은 다음과 같다.left : 모든 사람들을 심사하는게 걸리는 최소 시간right : 모든 사람들을 심사하는게 걸리는 최대 시간mid : 심사하는데 걸리는 총 시간cnt : mid 시간동안 심사 받을 수 있는 최대 사람 수 mid ..
https://school.programmers.co.kr/learn/courses/30/lessons/42627# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법수행할 작업 목록을 요청 시각 오름차순으로 정렬한다.우선순위 큐 선언한다. 소요 시간이 작은것이 먼저 뽑아져 나온다.X, Y 두개의 작업을 수행할 수 있을때 X 작업을 끝내는데 a 시간이 걸리고 Y 작업을 끝내는데 b 시간이 걸린다고하자두개의 작업 앞에 c 시간이 걸린다면X -> Y 순으로 작업을 한다면 각 작업을 끝내는데 걸리는 시간은X : c + a, Y : c + c + a + b 이다..
https://school.programmers.co.kr/learn/courses/30/lessons/43164#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법DFS를 사용한다.dfs(남은 티켓, 현재 공항, 현재까지의 누적 경로, 정답 후보(미정렬상태), 티켓 사용 여부, 티켓)모든 티켓을 사용했다면 정답 후보에 넣는다.티켓 반복문을 돌며 현재 공항과 티켓에 명시된 출발지가 동일하다면 depth + 1을 한다.단, 미사용 티켓이여야한다.모든 티켓을 사용했을때 정답 후보에 경로를 ","를 구분자로 넣는다.DFS 탐색을 종료하고 오름차순으로 ..