Algorithm/Programmers 48

[프로그래머스] 수식 최대화 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 우선 주어진 식(String expression)에서 숫자들과 연산자들을 분리하여 각각의 리스트에 저장하도록 했습니다. // ... List numbersOrigin = Arrays.stream(expression.split("[+\\-*]")) .map(Long::parseLong) .collect(Collectors.toList()); // 연산식 내 숫자 저장 List operators = getOperators(expression); // 연산식 내 연산자 저장 // ... pri..

[프로그래머스] 교점에 별 만들기 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 문제에서 나오는 그림이 주는 압박감 대비 상대적으로 해결하기 쉬웠던 문제였습니다. 문제에 접근했었던 방법은 단순했습니다. 일단 주어지는 직선 정보들을 통해 "교점"과 "그래프 전체 크기(가로 x 세로)"를 구한 후 그래프 상에 교점을 표기하여 이를 문자열 배열로 반환하는 것이었습니다. 교점을 구하는 것은 문제에서 주어지는 다음 참고사항으로 쉽게 구할 수 있었습니다. 이를 바탕으로 교점을 구하는 로직을 작성했습니다. private long[] getPoint(int[] line1, int[..

[프로그래머스] 숫자 블록 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 길이가 10억인 도로가 있을 때, 도로 상 위치 1부터 위치 10억까지 각각의 위치에 1번 블록 ~ 1천만 블록을 문제에서 주어진 규칙대로 배치해야한다. 이때 도로 상 각각의 위치에 올 수 있는 숫자 블록에는 일종의 규칙이 있다. 위치를 나타내는 해당 수(1 ~ 10억)가 "소수"일 경우에는 반드시 1이라는 점이다. 소수는 1과 1이 아닌 자기 자신으로만 나눠지는 수로서 1 외에는 n * 2, n * 3, n * 4, ... 등의 값의 형태를 띄는 숫자 블록이 나올 수가 없다. 이를 위해..

[프로그래머스] 양궁대회 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 우선 인자로 주어진 화살 n발에 대해서 백트래킹을 통해 라이언이 0점 ~ 10점에 대해 쏠 수 있는 모든 경우의 수를 탐색하도록 했습니다. private void bow(int[] lionInfo, int index, int depth) { if (depth == n) { return; } for (int i = 0; i = lionInfo[i]) { apache += score; } else { lion += score; } } return apache - lion; } 위에서 구한 점..

[프로그래머스] 게임 맵 최단거리 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제는 2차원 그래프 상에 특정 출발 지점에서 특정 도착 지점까지 가는 최단 경로를 구하는 문제로서 BFS(너비 우선 탐색)를 이용하여 해결할 수 있었습니다. 도착 지점은 (0, 0)으로, 출발 지점은 (n, m)으로 정해져있으므로, 처음 노드의 좌표를 (0, 0)으로 초기화 해준 후 이를 기점으로 동, 서, 남, 북 방향으로 너비 우선 탐색하도록 했습니다. 이때 탐색의 제외 대상으로는 맵을 이탈하는 경우, 기존에 방문했었던 좌표, 벽인 경우가 있습니다. 탐색 시 도착 지점 (n, ..