LV3 - 여행경로 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 단순 dfs로 풀이했다. 우선 들어오는 값을 Map 형태로 저장했다.key에는 시작점을 넣었고, value 에는 List 형태로 도착점을 저장했다. 이 때 Node 라는 클래스를 이용해서 visit 필드로 해당 티켓을 사용했는지 판단했다. 그리고 사전순으로 방문해야하기에 도착점을 기준으로 정렬했다. 이후에는 ICN을 시작으로 dfs 를 수행했다.  정렬을 했기에 사전순으로 앞선 값들을 먼저 방문한다. 계속 방문하다가 모든 티켓을 사..
LV3 - 단속 카메라 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42884?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이 문제의 핵심은 자동차의 진출 지점을 기준으로 오름차순 하는것이다. Case 1. [1]   | ---------------------- | [2]          | ----------------------|[3]                                  | --------------- | 눈으로 봤을 때 위 문제의 답은 2임을 알 수 있다. 우선 첫번째 차량을 위해 카메라가 한 대 필요하..
LV3 - 베스트앨범 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이정렬만? 잘하면 되는 문제이다. 1. 장르별로 재생횟수를 Map에 저장한다. 키는 장르, 밸류는 총 합을 저장한다.2. 장르별로 리스트 객체를 관리한다. 이 때 리스트안에는 고유번호와 플레이 횟수를 저장한다.  2 - 1. 이 때도 Map 을 사용해서 키 값은 장르로 하고, 밸류는 고유번호와 플레이 횟수를 저장하는 클래스로 한다.3. 저장을 모두 했다면 총 플레이 횟수가 가장 많은 장르부터 뽑아야한다. 이 때는 Priority Queu..
LV2 - 리코쳇 로봇 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/169199?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이bfs 문제이다. 단 조금 신경써야 할 것이 있는데, 한 쪽 방향 끝으로 간다는 것이다. 첫째론 로봇이 언제 멈추는지 정의할 필요가 있다. 1. 범위를 벗어났을 때2. 장애물을 만났을 때 두번째로는 동일한 곳에 방문했을때 처리를 어떻게 해줄것인가다.이거는 해당하는 칸에 몇번만에 방문했는지를 기억하면 된다.최소횟수 답을 구하기 때문에 이전에 여기 온 횟수보다 짧게 왔다면 추가 탐색을 하고, 아니면 더 할 필요..
LV2 - 미로 탈출
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이전형적인 bfs 문제이다. 출발점에서 레버까지 도달한다음, 레버에서 다시 출구까지 도달하도록  2번을 나눠서 bfs를 수행하면 된다. 탐색하면서 거리를 계속 체크하다가, 타겟칸(레버나 출구칸) 으로 이동하면 그만큼의 거리를 반환하도록 bfs를 구성하면 된다.  참고로 나는 시작점을 0이 아닌 1로 줘서 시작했기 때문에 마지막에 반환할 때 -2를 빼줬다. (bfs를 두번 수행하기에)  코드..
LV2 - 무인도 여행 (Java)
·
프로그래머스
문제https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이전~형적인 bfs 문제이다.사실 크게 얘기할 거리도 없이 방문 2차원 배열을 두고 방문했는지, X가 아닌지를 검사하고 가능한 곳에서 모두 탐색하면서 방문 체크를 한다음 더해진 값을 반환해준다. 이후 정렬만 해주면 끝이난다. 조금 신경쓴거는 char을 어떻게 int형으로 만드나였는데, 아스키코드로 계산해서 48을 빼주면 깔끔하게 값 처리가 가능했다.코드import java.util.*;clas..
LV2 - 호텔 대실 (Java)
·
프로그래머스
문제https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이우선 생각났던건 시작시간부터, 끝시간까지 1분 단위로 카운트를 하는것이었다.그 시간동안 몇개의 객실이 필요한지 파악하고 00:00 부터 23:59까지 모두 돈다음 가장 큰 수를 리턴하면 될거라 생각했다. 컨셉은 이렇게 잡았고, 초반에는 진짜 시간처럼 계산을 했었는데, 분기처리도 너무 까다롭고 퇴실 시간 이후 10분 처리도 까다로워서 생각을 바꿨다. 시간에 * 60 을 하고 분을 더하는 방식으..
LV2 - 전력망을 둘로 나누기 (Java)
·
프로그래머스
문제https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이진짜 단순한데 괜히 이상하게 생각했던 문제.. 문제 설명 그대로, 간선을 제거한다음, dfs나 bfs를 수행해서 얼만큼의 노드를 방문했는지 계산하고 그 차가 가장 작은 값을 return 해주면 되는 문제이다. 그래서 처음에는 간선을 다 추가해주고,wires 배열을 돌면서 간선 하나씩을 삭제한 다음해당 간선에 연결된 두개의 노드 각각을 시작점으로 탐색을 시작하고,몇 개의 노드를 방문했는지 기록한..
LV2 - 마법의 엘레베이터 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/148653# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이설명은 좀 복잡하지만, 결국 각자리를 0으로 만드는 과정을 거쳐 최종값 0을 만드는 문제이다. 단 여기서 신경써야할거는, 다음 자릿수로의 올림이다. 만약 지금 내가 보고 있는 자릿수가 9라면 0으로 올릴테고, 다음 자릿수에 1을 더하게 될 것이다.만약 다음 자릿수가 일반적인 숫자면 1만 더해주고 반복을 해주면 되겠지만 9라면?9일 경우에는 숫자가 더해져 0이 될거고, 그러면 이 자릿수에 ..
LV2 - 소수 찾기 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42839# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이방문을 체크하는 방식으로 dfs를 순회해서 모든 경우의 수를 만든다.모든 경우의 수를 넣을때, 011과 11은 같은 값으로 처리하기에 int로 바꾼다음에 set으로 중복을 제거했다.이후 소수인지 판별하는 식으로 정답을 구한다!코드import java.util.*;class Solution { public Set set = new HashSet(); public int solut..