본문 바로가기

분류 전체보기

(386)
[pro] 프로그래머스 level3 43238 입국심사 (Java) - 이분탐색 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 이전에 c++로 풀었던 적이 있다. (c++ 코드) 1. (전체 심사 가능 인원) += (전체 심사 시간)/(심사관 당 심사시간) 따라서 전체 심사 가능 인원이 n명보다 크거나 같으면 전체 심사 시간을 줄여볼 수 있다. 반대로 n명보다 작으면 전체 심사 시간을 늘려서 n명을 충족할 수 있도록 해야 한다. 2. n과 times의 범위가 모두 int 범위를 초과하므로 long으로 선..
[pro] 프로그래머스 level2 1844 게임 맵 최단거리 (Java) - BFS [문제] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 대표적인 BFS 기본 문제. [코드] import java.util.*; class Solution { int n, m; boolean[][] visited; int ans = Integer.MAX_VALUE; int[] dr = {0, 0, -1, 1}; int[] dc = {-1, 1, 0, 0}; public int solution(int[][] maps) { int answ..
[pro] 프로그래머스 level2 43165 타겟 넘버 (Java) - DFS [문제] https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 단순한 dfs 문제. numbers 배열 숫자에 대해서 + 또는 - 두 가지 경우가 존재한다. [코드] class Solution { int ans; public int solution(int[] numbers, int target) { int answer = 0; //숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return dfs(0, numbers, 0, tar..
[pro] 프로그래머스 level4 42897 도둑질 (Java) - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 스티커 모으기2 문제와 똑같다! 1. 집이 원형으로 배열되어있으므로 첫번째 집을 터는 경우(마지막 집을 털 수 없음)와 안터는 경우로 나눈다. 2. dp[i]는 도둑이 i번째 집까지 왔을 때 훔칠 수 있는 돈의 최대값. 따라서 i번째 집을 터는 경우와 털지 않는 경우로 나눌 수 있다. 터는 경우 이전 집에 경보가 울리므로 dp[i-2] + money[i]가 될 것이고, 털지 않는..
[pro] 프로그래머스 level3 42627 디스크 컨트롤러 (Java) - 힙(우선순위 큐) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1. 소요시간이 짧은 순서대로 처리해야 평균 대기 시간이 최소가 될 것이다. 2. 소요시간이 짧더라도 요청 시점이 터무니없이 뒤에 있다면 평균 대기 시간은 늘어날 것이다. 따라서 현재 작업이 끝나는 시점보다 앞서 들어온 요청에 대해서 수행시간이 짧은 작업을 처리한다. 이때 우선순위큐를 이용한다. [코드] import java.util.*; class Solution { publi..
[pro] 프로그래머스 level3 12942 최적의 행렬 곱셈 - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12942 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] https://stritegdc.tistory.com/180 [boj] 백준 11049 행렬 곱셈 순서 (c++) - dp [문제] https://www.acmicpc.net/problem/11049 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, striteg..
[pro] 프로그래머스 level3 42579 베스트앨범 (Java) - 해쉬 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/42579https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] HashMap을 이용한 연산을 통해 해결 가능. [코드] import java.util.*; class Solution { Map hs = new HashMap(); //장르별 총 재생횟수 Map music = new HashMap(); //장르별 고유번호와 재생횟수 ..
[pro] 프로그래머스 level3 12987 숫자 게임 (Java) - 그리디, 투포인터 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] A의 각 값들을 B의 값이 최소한의 차이로 이기도록 하면 B의 최종 승점을 가장 높이는 방법이 될 것이다. 이를 위해 A와 B 배열을 모두 정렬한 후 포인터 2개를 두고 각 배열을 가리키도록 한다. A 값보다 B 값이 더 크다면(A와 B 배열을 모두 오름차순 정렬했으므로 가장 근소하게 A보다 B가 더 큰 경우가 될 것임) 승점을 높이고, A 인덱스와 B 인덱스 모두 증가시킨다. ..