본문 바로가기

전체 글

[Java] Lv.3 등굣길 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이어떻게 풀어야할지 감이 안와서 아래의 글을 참고 했다.map의 가장 윗 줄과 가장 왼쪽 줄은 최단 거리가 1개 밖에 없다는 점을 이용하여 다 1로 채우고 (물 웅덩이가 있는 경우는 제외)특정 칸의 최단 거리 개수를 구할 때 윗 칸과 왼쪽 칸의 값을 확인하여 더해서 기록한다는 발상을 활용한다. [Java] 프로그래머스 등굣길문제 https://school.programmers.co.kr/learn/courses/30/lessons/42898?language=java# 프로그래머스 코드 중심의 개발자.. 더보기
[Java] Lv.3 단어 변환 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이1. 한 번 방문했던 단어는 더 이상 접근하지 않아도 된다.2. 각 단어에 도달했었던 단계 (방문레벨)을 각각 기록한다. 우선, 각 위치의 words에 방문했었는지와 몇 번째로 방문했는지를 기록할 visited 배열을 하나 만들고변환가능한 단어를 저장할 큐를 하나 생성한다.다음으로 Begin에서 변환 가능한 모든 단어를 찾아서 큐에 담아내고 해당 단어의 index위치의 visited를 1로 저장한다.(1단계에 도달가능한 단어라는 의미) 이후 큐가 빌 때까지 확인을 거치는데추출한 단어와 아직 방문레.. 더보기
[Java] Lv.3 야근 지수 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이문제를 보자마자 든 생각이 아 저 works를 내림차순 우선순위 큐에 담아놓으면 되겠구나였다. n시간 만큼 일을 해서 n만큼의 작업량을 처리하는데 n시간 뒤에 works의 남은 작업량의 제곱수들의 합이 최소값이 되도록 구해야하는 것이다. 즉, 각 작업의 남은 작업량이 작을 수록 제곱수들의 합이 작아진다. 만약 7 8 6으로 작업이 남았고 n이 3이다라고 했을 때 1. 8에서 1시간 작업을 하여 7이 남도록 만든다. 2. 7 둘 중 하나를 작업하여 6이 남도록 만든다. 3. 남은 7 하나를 작업하여 .. 더보기
[Java] Lv.3 네트워크 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이DFS를 활용하여 문제를 풀이했다. 컴퓨터 수 만큼 리스트를 만든다.(해당 컴퓨터와 연결된 다른 컴퓨터를 기록할 리스트)방문한 적 없는 컴퓨터를 기준으로 DFS를 실행하여 방문한 적 없는 연결된 다른 컴퓨터를 계속 확인한다.자바 코드import java.util.*;class Solution { private boolean[] visited; private List> list; public int solution(int n, int[][] computers) { .. 더보기
[Java] Lv.3 정수 삼각형 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43105?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이위에서 아래로 내려가며 계산하면 고려할게 너무 많다.BOTTOM - UP 방식으로 위로 올라가면서 계산한다.한 줄로 표현하면 n층 i번과 i + 1번 중 더 큰 값을 n - 1층 i번에 더한다.그러면 맨 위층에는 아래서부터 더해서 올라온 값 중 가장 큰 값이 저장되고 그 값을 반환한다.자바 코드import java.util.*;class Solution { .. 더보기
[Java] Lv.2 연속 부분 수열 합의 개수 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이1 ~ elements개(이하 k개)의 수열을 합산했을 때 나올 수 있는 수의 개수를 출력하는 문제이다.중복 값을 없애기 위해 HashSet을 사용한다.수열의 0번째 자리부터 시작하면서 k개의 수열의 합을 더한다.이후 더한 합을 HashSet에 저장한다.모든 연산이 종료된 뒤에 HashSet의 size를 확인하면 정답이 나온다.로직은 주석으로 확인자바 코드import java.util.*;class Solution { public int solution(int[] elements) { .. 더보기
[Java] Lv.2 택배상자 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이스택(서브 컨테이너)을 활용해야하는 문제이다.1. 메인 컨테이너에서 꺼낼 수 있는 박스가 기사가 원하는 박스(이하 기사 박스)보다 작으면 다른 것을 고려할 필요가 없고 현재 컨테이너의 박스를 서브 컨테이너에 담으면 된다.2. 메인 컨테이너와 기사 박스가 같다면 정답을 +1 하고 다음 박스를 검사한다.3. 12를 제외한 상황은 서브컨테이너를 확인해야하는 상황이다.3-2. 서브 컨테이너에서 꺼낼 수 있는 박스와 기사 박스가 같다면 2와 같이 정답을 +1 처리하고 다음 박스를 검사한다.4. 서브 컨테이.. 더보기
[Java] Lv.2 롤케이크 자르기 문제문제 풀이생각보다 단순했다.그냥 각 인원의 토핑 종류를 저장할 배열을 각각 만들고한 쪽에 일단 전부 몰아준 뒤에 하나씩 다른쪽에 넘겨주면서 토핑 종류를 비교하면 쉽다.자바 코드import java.util.*;class Solution { public int solution(int[] topping) { int answer = 0; // 토핑 종류 int toppingKind = Arrays.stream(topping).max().getAsInt(); // 각 인원이 가진 토핑 개수를 기록할 배열, 1 ~ toppingKind만큼의 수를 위해 toppingKind + 1 // 추가로 마지막에 가진 토핑 종류가 몇개인지 .. 더보기