Lucky Charms Clover

⚙️ 코딩테스트

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 4주차 코딩테스트 : 연합 (다시 풀어야 함)

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 Array.from BFS 구할 것 BFS로 구현한다. union-find 알고리즘으로 푼 분들이 많던데 이게 뭔지 알아봐야겠다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('line', (line) => { input.push(line.split(' ').map(Number)); if (input.length === input[0][1] + 1) { rl.close(); } }); rl.on('close', () => { con..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 3주차 코딩테스트 : 과일 구매 (못 품)

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 Math.floor Math.min 구할 것 칼로리/가격, 가격이 담긴 cost를 순회하면서 계속 빼준다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; let num, money; let price = []; let cal = []; let answer = 0; rl.on('line', (line) => { input.push(line.trim()); }); rl.on('close', () => { [num, money] = input.shi..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 3주차 코딩테스트 : 작은 노드

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 그래프 만들기 구할 것 데이터 가공 입력값 첫 줄에 주어지는 노드의 개수, 간선의 개수, 시작 노드의 번호를 shift로 따 와 각각 numOfNode, numOfEdge, startNodeNum에 할당한다. 나머지 input 값은 그래프에 넣어줘야 하기 때문에 모두 number로 형 변환을 한다. 그래프 만들기 numOfNode+1 길이를 가진 배열을 만들어 graph를 만들고, 똑같은 크기이지만 false로 fill한 visited를 만들어준다. input의 한 줄을 from, to로 구조 분해 할당 하여 graph에 인덱스에 맞게 넣어준다. 인덱스와 노드 번호 수를 일치 시키기 위해 graph의 배열 크기를 +1 한 것 계산하기 queue..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 3주차 코딩테스트 : 발전기 (2)

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 Map 객체 구할 것 데이터 가공 입력값 첫 줄에서 한 변의 길이를 scale, 단지의 기준을 standard로 잡아주고 나머지 입력값을 village로 잡아준다. 건물의 유형 번호 complex와 단지를 이룬 개수를 키와 밸류로 사용하기 위해 객체 count를 선언한다. 방문 여부를 확인할 visited 배열을 만든다. bfs를 실행할 queue 배열을 만든다. 2중 for문으로 마을을 돌면서 bfs(i, j, village[i][j])를 시작한다. queue 배열에서 [i, j]를 push하고 방문 처리를 한다. 동일한 건물 갯수를 계산할 sum을 0으로 초기화한다. while문을 돌면서 현재 i, j를 기준으로 상하좌우를 계산하고 방문하지..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 3주차 코딩테스트 : 발전기

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 Array.from 구할 것 전력을 공급할 수 있는 조건은 1인 칸에 발전기를 설치하거나, 상하좌우로 인접한 집 중 하나가 전력을 공급받으면 된다. 따라서 먼저 마을을 탐색하면서 1이면서 방문하지 않은 곳을 찾는다. 이 곳에 발전기를 설치하고, 방문처리를 한 후 이 곳을 중점으로 상하좌우를 찾는다. 해당 점을 curX, curY로 시작해서 상하좌우를 범위에 맞게 확인하고, 1이면서 방문하지 않은 곳인지를 체크해 다시 queue에 넣어준다. 넣음과 동시에 방문 처리도 해주어야 한다. 방금 넣은 nextX, nextY를 기준으로 다시 처음처럼 도는데, 만약 넣은 nextX, nextY가 없다면 처음 시작한 이중 for문이 증가하면서 다른 쪽을 탐색..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 3주차 코딩테스트 : 통증(2)

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 Math.floor 구할 것 그리디로 풀었더니 자꾸 예외가 발생했다. 지금 다시 보니 갑자기 예제 2번이 이해가 안 간다. 먼저 일단은 고통을 itemB만큼 나눈 몫을 big이라고 한다. 이 때 big을 줄여가면서 남은 pain을 찾는다. 남은 pain이 itemA로 딱 나누어 떨어진다면, 그 몫을 small이라고 하고 big과 더해준다. 즉 itemB로 나눌 수 있는 최대의 몫과 itemA로 나눌 수 있는 몫을 더해준 것이다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, })..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 2주차 코딩테스트 : GameJam (못 품)

📌 문제 📌 입력 📌 출력 및 예제 📌 풀이 알아야 하는 것 구할 것 정해 코드를 참고해서 다시 풀어보자 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const directions = { "U": [-1, 0], "D": [1, 0], "L": [0, -1], "R": [0, 1], }; let N; let goormPos, playerPos; let goormVisited, playerVisited; let board = []; function set_Pos(a) { if (a === -1) return N-1; if (a =..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 2주차 코딩테스트 : 폭탄 구현하기 (2)

📌 문제 📌 입력 📌 출력 📌 예제 입출력 📌 풀이 알아야 하는 것 arr.flat (공식 문서) flat() 이면 그냥 1차원을 제거한다. 배열의 구멍도 제거한다. 구할 것 입력값 받기 입력값을 이렇게 받아도 될지 모르겠는데...예제 1로 하면 처음에 들어오는 값이 [4 4]로, 이 값을 scale과 count로 받아준다. input의 전체 길이는 처음 들어오는 [4 4]와 한 변의 길이 만큼, 폭탄을 떨어뜨릴 횟수 만큼 들어오니 scale + count + 1로 받았다. 데이터 가공 입력값의 첫 줄을 scale, count로 잘라내고, 이후 input의 0번째 인덱스부터 scale까지를 잘라내 map으로 만든다. 잘라냈기 때문에 남은 input의 값은 좌표만 남아 있다. 따라서 나머지를 positio..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 2주차 코딩테스트 : 통증

📌 문제 📌 입력 📌 출력 📌 예제 입출력 📌 풀이 알아야 하는 것 Math.floor 구할 것 14로 나눌 수 있는 최대한을 나누고, 14로 나눌 수 없는 나머지는 7로 또 최대한 나눠준다. 7로도 나눌 수 없는 나머지는 1로 최대한 나눠서 그 item에 더해준다. 몫과 나누기 기호만 알면 풀 수 있는 문제인데, 최대한으로 나눌 때 몫이 소수점으로 떨어지기 때문에 이 때는 완전하게 내려주기 위해 Math.floor를 써서 소수점을 제거해준다. 4const readline = require('readline'); (async () => { const rl = readline.createInterface({ input: process.stdin }); let input = []; for await (con..

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 2주차 코딩테스트 : 구름 찾기 깃발

📌 문제 📌 입력 📌 출력 📌 예제 입출력 📌 풀이 알아야 하는 것 좌표로 접근할 때 상하좌우 + 대각선 주로 dx, dy로 상하좌우를 표현한다. 주의할 점은 그래프와 달리 배열에서 이런 변화량을 표현할 때 좌우는 -1, 0으로 우측으로 갈수록 +1이 되는 점은 똑같지만 상하일 때는 -1, 0으로 위로 갈수록 -1이 된다는 점이다. 그래서 [1, 0], [-1, 0], [0, -1], [0, 1] 이런 식으로 우측 이동, 좌측 이동, 위로 이동, 아래로 이동을 표현할 수 있다. 대각선도 비슷한데 예컨대 왼쪽 위를 향한 대각선이라고 하면 x축으로 좌측이니 -1, 위를 향했으면 y축으로 위쪽이니 -1로 [-1, -1] 이렇게 표현할 수 있다. 즉 반시계 방향으로 왼쪽 위부터 표현하자면 [-1, -1], [-..

썸머몽
'⚙️ 코딩테스트' 카테고리의 글 목록 (2 Page)