슬기로운슬기
[프로그래머스][Lv2][Java] 피로도
study/코딩테스트 2023. 12. 27. 14:57

문제 [완전탐색][dfs][재귀] https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 class Solution { // 최대 탐험 횟수를 저장할 전역 변수 private int max = 0; // 주어진 던전(dungeons)에서 k만큼의 에너지로 탐험할 때 최대 탐험 횟수를 반환하는 메서드 public int solution(int k, int[][] dungeons) { // 각 던전을 방문했는지 여부를 저장할 배열 int[] visi..

[프로그래머스][Lv2] 거리두기 확인하기
study/코딩테스트 2023. 12. 21. 10:31

정답 코드 public class Solution { // 이동 방향을 나타내는 배열 private static final int dx[] = {0, -1, 1, 0}; //상, 좌, 우, 하 private static final int dy[] = {-1, 0, 0, 1}; // 자리 옆에 다른 응시자가 있는지 확인하는 메서드 (빈테이블인 경우) private boolean isNextToVolunteer(char[][] room, int x, int y, int exclude) { for (int d = 0; d < 4; d++) { // 해당 방향이 제외된 방향이면 건너뛰기 if (d == exclude) continue; // 새로운 좌표 계산 int nx = x + dx[d]; int ny = ..

article thumbnail
[알고리즘] DFS(깊이우선탐색)와 BFS(너비우선탐색)
study/코딩테스트 2023. 12. 20. 20:21

그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있다. 그래프란? 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종 그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것 DFS(깊이 우선 탐색) 시작점에서 한 갈래로 더 이상 갈 수 없을 때까지 탐색하고, 더 갈 곳이 없다면 이전의 경로로 되돌아간다. 가장 직관적이고 구현하기 쉬운 탐색 방법 현재 정점과 연결된 정점들을 하나씩 갈 수 있는지 검사하고, 특정 정점으로 갈 수 있다면 그 정점에 가서 같은 행위를 반복 같은 정점을 다시 방문하지 않도록 정점에 방문했다는 것을 표시 스택이나 재귀함수를 통해 구현 DFS의 구현 - 재귀함수 // 각 노..

article thumbnail
[프로그래머스][Lv0] 모스부호(1)
study/코딩테스트 2023. 6. 12. 22:28

import java.util.HashMap; import java.util.Map; class Solution { public String solution(String letter) { Map morse = new HashMap(); morse.put(".-", "a"); morse.put("-...", "b"); morse.put("-.-.", "c"); morse.put("-..", "d"); morse.put(".", "e"); morse.put("..-.", "f"); morse.put("--.", "g"); morse.put("....", "h"); morse.put("..", "i"); morse.put(".---", "j"); morse.put("-.-", "k"); morse.put("...

article thumbnail
[프로그래머스][LV0] 문자열 여러번 뒤집기
study/코딩테스트 2023. 6. 10. 23:50

class Solution { public String solution(String str, int[][] queries) { StringBuilder sb = new StringBuilder(str); for (int i = 0; i < queries.length; i++) { int cnt1 = queries[i][0]; int cnt2 = queries[i][1]; String rev = sb.substring(cnt1, cnt2 + 1); sb.replace(cnt1, cnt2 + 1, new StringBuilder(rev).reverse().toString()); } return sb.toString(); } } 처음에 뒤집기가 아니라 바꾸기인 줄 알고 시간 허비 ... 문제 좀 더 꼼꼼히 봐..

반응형