Seren dev's blog
article thumbnail
[프로그래머스] Lv.2 : 배달 (그래프 최단 경로 알고리즘) - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이1 : 다익스트라 - 순차 탐색, 인접 배열 최단 경로 알고리즘을 사용하여 1번 마을부터 각 마을까지의 최단 시간(경로)를 구해야 한다. 최단 경로 알고리즘이란 주어진 그래프에서 한 정점(노드)에서 다른 정점까지의 최단 경로를 구하는 알고리즘이다. 대표적인 최단 경로 알고리즘은 3가지가 있다. 다익스트라 알고리즘 (default, 가중치가 모두 양수 = 음수X) 벨만 포드 알고리즘 (dista..

article thumbnail
[프로그래머스] Lv.2 : 방문 길이 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 캐릭터가 지나간 길을 저장하는 Set 타입 변수를 사용하여 캐릭터가 처음 걸어본 길의 길이(Set의 크기)를 구한다. 길의 정보를 저장하기 위한 클래스 Line을 생성하고, Line은 시작점의 좌표와 도착점의 좌표 둘 다를 저장해야 하므로 int 형 변수 prevX, pervY, curX, curY를 필드 변수로 선언한다. 또한 Set형 변수 lineSet을 사용하므로 lineSet의 중복성..

article thumbnail
[프로그래머스] Lv.2 : 점프와 순간이동 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - BFS (실패) 처음에 문제를 보고 BFS로 풀려고 했다. 하지만 N이 10억 이하의 자연수이며 풀이 과정도 시간이 오래 걸리는 문제가 생겼다. 정확성 테스트는 모두 맞았지만, 효율성 테스트에서 메모리 초과/시간 초과로 모두 실패했다. 다음은 BFS를 사용한 테스트에서 실패한 코드다. import java.util.*; public class Solution { public int sol..

article thumbnail
[프로그래머스] Lv.2 : 스킬트리 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 skill_trees에 저장된 각 스킬 트리가 가능한 스킬트리인지 검사한 후 가능한 스킬트리의 개수를 출력해야 한다. 스킬트리가 가능한 스킬트리인지는 skill에 저장되어있는 스킬들의 순서를 통해 알 수 있다. 이를 위해 skill에 저장되어있는 스킬들의 순서를 통해 Map 타입 변수 skillMap을 선언해 (스킬 이름, 스킬 순서)를 저장한다. 이후 skill_trees에 저장된 각 스킬..

article thumbnail
[프로그래머스] Lv.2 : 영어 끝말잇기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12981?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 영어 끝말잇기가 끝나는 사람의 번호와 차례를 구해야 한다. 영어 끝말잇기가 끝나는 경우는 2가지다. 이전에 등장했던 단어를 사용할 때 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말하지 않은 경우 영어 끝말잇기가 끝나는지 검사하는 메서드를 사용해 영어 끝말잇기가 끝나는 경우 그 사람의 번호와 차례를 구한다. 이전에 등장했던 단어를 저장하기 위해 Set 형 변수..

article thumbnail
[프로그래머스] Lv.1 : 소수 만들기 - 자바[Java]

Summer/Winter Coding(~2018) https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 nums에 있는 숫자들 중 서로 다른 3개를 골라야 하며, 더했을 때 소수가 되는지 판별해야 한다. 서로 다른 3개를 고르는 방법은 DFS를 사용하여 조합을 통해 구한다. 그리고 조합으로 구한 수를 모두 더해서 소수가 되는지 함수를 호출해 판별한다. 로직 1. 전역 변수로 조합의 수를 저장하는 comb 배열을 선언하고, 정답을 저장하는 ans..