본문 바로가기

전체 글

(127)
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이라는 상징적인 값을 넣는다. 이후에 큐의 가장 앞을 빼고, 다시 새로운 값을 ..
LV2 - 숫자 변환하기 (Java) 문제https://school.programmers.co.kr/learn/courses/30/lessons/154538# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이dp? bfs 스러운 문제이다. x로부터 조건에 맞게 값을 더해주거나 곱해주면서 뻗어가면서,해당 값이 몇번만에 만드는지 파악해야한다. 값을 몇번만에 만드는지 저장할 array가 있어야하고,bfs를 수행할 덱을 선언한다. 처음 x값을 0으로 설정한다음 이 값으로 부터 bfs를 수행한다.방문 여부 및 한계값을 체크한다음, 조건에 만족한다면 기존 값을 만드는 횟수 + 1 을 배열에 저장해주면 ..