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임을 알 수 있다. 우선 첫번째 차량을 위해 카메라가 한 대 필요하..
LV2 - 리코쳇 로봇 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/169199?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이bfs 문제이다. 단 조금 신경써야 할 것이 있는데, 한 쪽 방향 끝으로 간다는 것이다. 첫째론 로봇이 언제 멈추는지 정의할 필요가 있다. 1. 범위를 벗어났을 때2. 장애물을 만났을 때 두번째로는 동일한 곳에 방문했을때 처리를 어떻게 해줄것인가다.이거는 해당하는 칸에 몇번만에 방문했는지를 기억하면 된다.최소횟수 답을 구하기 때문에 이전에 여기 온 횟수보다 짧게 왔다면 추가 탐색을 하고, 아니면 더 할 필요..
2636 - 치즈 (Java)
·
백준
문제https://www.acmicpc.net/problem/2636 풀이문제의 핵심은 가장자리, 치즈의 테두리 부분을 어떻게 캐치할 것이냐이다. 문제에서 잘 보면 이미 힌트를 줬는데, 가장 끝쪽의 4면은 치즈가 존재하지 않는다. 이 말은 즉슨, 치즈 테두리 (녹을 치즈) 를 모두 탐색할 수 있다는 말이다. 가로 막힌부분이 없으니 말이다. 그렇기 때문에 끝 라인 아무곳에서  bfs 를 수행해서, 치즈의 테두리를 탐색하면 된다. 마지막의 경우 녹일 치즈가 없을것이다. 이를 대비하여 단계마다 녹일 치즈의 개수를 저장한다. -- 나는 배열 하나를 더 활용하여 녹일 치즈를 체크하고, bfs 방문 여부 모두를 체크했다. 그리고 난 후 녹일 치즈를 0 으로 바꿔주는 작업을 수행했다. 코드import java.uti..
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..
LV2 - 다리를 지나는 트럭 (Java)
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이너무나 queue 스러운 문제였다. 중요한 부분은 다리의 무게 한계점과, 각 트럭의 이동을 체크하는거였다. 사실 무게는 변수하나를 두고, 큐에 들어오고 나갈때 계산만하면 되었다. 그래서 다리에서 이동하는 트럭을 체킹하는게 문제였는데, 나는 큐에 실제로 다리를 놓는다는 방식으로 생각했다. 우선 큐에 다리길이만큼 -1이라는 상징적인 값을 넣는다. 이후에 큐의 가장 앞을 빼고, 다시 새로운 값을 ..