[프로그래머스] 여행 경로 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ⭐️ 중요 포인트1. graph에 출발지와 도착지에 대한 정보를 기록한다. 이 때, isNotUsed와 graph를 따로 정의한 이유는 조건 중 "만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다."라는 조건을 맞추기 위해서 graph의 도착지는 List 형식으로 저장하였다. 다만 그래프를 순회하면서 중복 순회를 방지하기 위해서 값을 저장해야 하는데, 이 때, List.contains() 를 사용하게 되면 한 번 탐색..
[백준] 2239. 스도쿠 - Java
·
백준 알고리즘/Java
https://www.acmicpc.net/problem/2239 https://kyxxgsoo.tistory.com/entry/%EB%B0%B1%EC%A4%80-2580-%EC%8A%A4%EB%8F%84%EC%BF%A0-Java [백준] 2580. 스도쿠 - Javahttps://www.acmicpc.net/problem/2580 백트래킹 + 재귀를 활용한 문제 ⭐️ 중요 포인트1. blank의 가로, 세로, 해당 blank를 포함하는 정사각형 구역에서 주어진 num이 나오지 않았는지를 판별하는 메서드 구kyxxgsoo.tistory.com해당 문제와 동일한 방식으로 푸는 문제이다.. 아마 입출력만 바뀐듯.. import java.util.*;import java.io.*;public class P22..
[프로그래머스] 아이템 줍기 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ⭐️ 중요 포인트1. 사각형의 외부 테두리와 내부를 구별해서 보드를 채워야 한다. (나중에 겹치는 부분을 모두 2로 채우고, 테두리를 1로 설정해서 BFS/DFS를 돌 때 추가적인 체크 없이 1만 따라서 돌 수 있도록 제한하기 위함.)2. 보드에 실제 크기로 선을 따라 칠하면 ㄷ자나 ㄹ자처럼 간격이 좁게 직선이 겹친 구간을 판단하지 못한다. 따라서 2배 업스케일링해서 보드를 칠한 다음에 cnt에서 /2를 한 값을 answer로 출력하도록 해야한다.아래 ..
[백준] 13023. ABCDE - Java
·
백준 알고리즘/Java
https://www.acmicpc.net/problem/13023 ⭐️ 중요 포인트1. 그래프 그리기 (필자는 코테에서 많이 데여서 N이 매우 큰 값을 가정해놓고 문제를 해결하기 위해 Map>를 사용해 그래프를 그렸다.2. isVisted로 기존에 방문한 노드 중복해서 방문하지 않도록 기록하기. (여기도 마찬가지로 현재 문재는 boolean[]을 활용해서 방문 num을 기록해도 되지만, 코테에 많이 당해본 필자는... Set를 통해서 큰 값에도 대응할 수 있도록 문제를 해결하였다.)3. dfs를 돌며 길이가 5 이상인 노드를 방문하도록 구현. (여기서 실수 한 부분이 하나 있는데 아래 코드를 보면 한 지점을 잡고 DFS를 돌린 후, 가장 먼 지점을 잡고 다시 DFS를 돌려 문제를 해결했다. 트리의 지름..
[백준] 2580. 스도쿠 - Java
·
백준 알고리즘/Java
https://www.acmicpc.net/problem/2580 백트래킹 + 재귀를 활용한 문제 ⭐️ 중요 포인트1. blank의 가로, 세로, 해당 blank를 포함하는 정사각형 구역에서 주어진 num이 나오지 않았는지를 판별하는 메서드 구현2. 재귀 내에서는 1~9(스도쿠에 들어갈 수 있는 수) 중 유효한 수만 선택하며 빈칸에 채워넣는 백트래킹 방식을 사용했다.3. 만약 blankNum이 blanks.size()에 도달하지 못했다는 것은 중간에 잘못된 값을 선택해서 마지막 빈 칸 까지 채우지 못함을 의미한다.4. blankNum == blanks.size()가 되면 모든 빈 칸이 유효한 값으로 채워졌고, 이후 최초로 나온 경우의 수에 대해서 board를 출력하면 된다. 이 때, System.exit..
[프로그래머스] 콜라 문제 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr과외학생이 질문한 문제이다. 간단한 수학 계산 문제이다. ⭐️ 중요 포인트1. 내가 가진 빈 병(n)을 a개로 나눈 몫에 b를 곱해 반납하고 새로 얻을 수 있는 병의 개수를 구한다.2. 새로 받은 병의 개수를 answer와 n에 더한다.3. n에는 아까 반납할 때 나누어 떨어지지 않아 반납하지 못한 병의 개수를 더해준다.class Solution { public int solution(int a, int b, int n) { int a..