문제https://www.acmicpc.net/problem/2941 첫 번째 풀이처음 시도한 풀이는 문자열을 인덱스별로 탐색을 진행할때 크로아티아 알파벳의 첫 글자가 나오면 그 다음 문자들을 확인하는 방식을 선택했다. 주의할 점은 for문을 이용한 탐색을 진행할 때 전체 길이의 - 2 까지 탐색한다는 것이다. 이는 dz=가 나오면 인덱싱이 안되는 경우의 수가 있을 수 있다고 판단했다. 코드// 첫 시도(성공)const input = require("fs") .readFileSync( process.platform === "linux" ? "/dev/stdin" : __dirname + "/example.txt" ) .toString() .trim() .split("\n");const st..
구현
문제https://www.acmicpc.net/problem/8979 풀이이 문제의 경우는 정렬과 구현을 해야하는 문제이다. 각 나라별 금, 은, 동 메달의 개수에 따른 정렬을 해준다.arr.sort((a, b) => { if (b[1] > a[1]) return 1; else if (b[1] === a[1]) { if (b[2] > a[2]) return 1; else if (b[2] === a[2]) { if (b[3] > a[3]) return 1; else if (b[3] === a[3]) return 0; else return -1; } else return -1; } else return -1;}); 이어서 각 나라별 등수를 매겨야하는데, 주의할..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이번 문제는 원형 탐색과 순열을 이용해 풀이를 진행했다. 중요한 것은 로직의 구성인거 같다.몇 명을 선택할 것인가?정해진 인원을 누구로 채울것인가?어디 부터 시작할 것인가?각 인원이 어디까지 커버할 수 있는가?위의 네 가지 로직을 구현한다면 문제없이 문제 풀이가 가능할 것이다.코드function solution(n, weak, dist) { const getPermutation = (arr, n) => { if (n === 1) return arr.map((e) => [e]); let res = []; for (let i = 0;..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이번 문제는 초반에 접근접을 잘 찾은것같다.첫 풀이에서는 DFS를 이용해 B가 최대로 많은량의 물건을 가져가 A가 최소의 값을 갖도록 했다.하지만, 방문 여부를 기록하는 과정에서 문제가 있었고, 이전의 코드에서는 시간 초과가 발생했다. 그래서 A와 B의 점수?를 DFS 함수에 전달하여 함수 내부에서 Set 자료형에 현재의 인덱스와 각각의 점수를 기록했다.이는 해당 물건의 인덱스에서 A가 가져간 경우와 B가 가져간 경우를 따로 계산해야 하기 때문이다. 코드function solution(info, n, m) { let answer = Infinit..

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이 문제의 키 포인트는 두가지로 생각한다. 첫 번째, 외각에 있는 요소 체크 후 제거. 이는 테두리에 있는 요소를 확인하는 것은 이 요소가 지게차로 제거할 수 있는지 확인하는 것이다. 나는 -1이라는 값을 이용해 BFS 알고리즘으로 4 방향으로 확인하며 탐색을 진행했다. 두 번째, 제거된 블럭으로 인해 태두리에 위치하게 되는 요소의 계산이다. 예를 들어보자.위의 사진과 같이 물건들이 있다고 가정하자. 명령어는 ["BB", "A"]가 주어졌을때, "BB" 명령어가 먼저 시행되며 해당 물건들에서 B 요소들은 모두 테두리와 상관없이 모두 제거된다. 제거..
문제https://school.programmers.co.kr/learn/courses/30/lessons/60061 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이해당 문제는 각 기둥과 보의 설치/삭제에 대한 조건이 까다로운 문제이다. 나머지는 그닥 어려운 문제는 아니다. 우선 기둥의 설치부터 살펴보자.문제에서 기둥이 설치될 수 있는 조건을 아래와 같이 정의했다.기둥은 y가 0인 바닥일 때다른 기둥의 위일때보의 양끝(왼쪽 오른쪽)일때그렇다면 4가지 이외의 설치는 안된다는 것이다. 이를 이용해 기둥를 설치할 수 있는지 판별하는 함수를 만들어 주자. 그리고 보의 설치에 대한 조건을 알아보자.문제에서 ..