🚩 문제 주소 📄 접근 방법 구현 더보기 틱택토에서 승리 조건은 8가지 밖에 없기 때문에 직접 구현해주었습니다. 주어진 게임판을 1차원 배열로 바꿔준 후, O와 X의 개수를 구해주었고, O와 X가 승리했는지 구했습니다. - O의 개수가 X의 개수보다 적다 - O가 성공했는데 X의 개수와 같거나 적다 - X가 성공했는데 O의 개수보다 적다 - O와 X가 동시에 성공했다 이 4가지 조건 중 하나라도 걸리면 0을 반환했고, 걸리는게 없다면 1을 반환했습니다. 👨💻 나의 코드 const checkWin = (board, shape) => { if (board[0][0]===shape) { if (board[0][1]===shape && board[0][2]===shape) return true; if (boa..
🚩 문제 주소 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📄 접근 방법 완전탐색 - 백트래킹..? 더보기 일단 만들어진 숫자를 소수인지 판단을 하기 위해서 에라토스테네스의 체를 이용하여 소수 판별 함수를 만들었습니다. 주어진 숫자 문자열을 이용해서 가능한 모든 숫자를 백트래킹 알고리즘을 이용하여 구해주었습니다. 하지만 '11'과 '011'은 같은 숫자인 것으로 판단하는 게 조건이기 때문에 Set을 이용하여 중복을 제거해 주었습니다. 구한 숫자들을 소수 판별 함수에 전달해서 판단 후, 소수가 맞다면 answer를 1씩 증가시켜줍니다. 👨💻 나의 코드 ..
🚩 문제 주소 📄 접근 방법 완전탐색 - BFS 더보기 전선들 중 하나를 끊어야 하므로 주어진 wires 배열을 하나씩 제거한 경우를 각각 판단합니다. 방문한 정점을 체크할 배열을 만듭니다. 송전탑들의 그래프를 만듭니다. BFS를 이용해서 방문한 정점의 개수를 셉니다. 처음 주어지는 wires는 항상 모두 이어져 있기 때문에, 하나를 잘랐을 경우 정점의 개수는 항상 2개가 나옵니다. 따라서 answer 변수와 두 정점의 개수의 절댓값 중 최솟값을 찾아서 계속 갱신합니다. answer를 반환합니다. 👨💻 나의 코드 function solution(n, wires) { wires = wires.sort(); // 테스트케이스 7번 let answer = 1e9; for (let i=1; i[]); for ..
🚩 문제 주소 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📄 접근 방법 수학? 더보기 A, E, I, O, U에 각각 인덱스를 붙여서 객체를 만들었습니다. 또한 5⁰, 5¹, 5², 5³, 5⁴를 각 인덱스까지 누적으로 더한 값들을 역순으로 할당합니다. 알파벳 한 개부터 다섯 개까지 되는 경우가 아니면 역순으로 줄어들수록 큰 숫자이기 때문입니다. 주어진 단어를 반복해서 가중치[인덱스]와 알파벳의 인덱스를 곱하고 1을 정답에 더해줍니다. A의 인덱스를 0이라고 할당해 놓았지만, A는 1부터 시작하기 때문에 1을 더해주어야 하는 것입니다. 정답을 반환합니..
🚩 문제 주소 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📄 접근 방법 배열 인덱싱 더보기 문제 설명이 너무 애매한 문제인 것 같다는 생각이 듭니다. 처음에는 문제에서는 순회하면서 인덱스를 보고 배열을 슬라이싱 한다는 느낌으로 해석해서 계속 틀렸습니다.. 전혀 모르겠어서 혼자 화만 내고 있었는데 동기분의 과감한 풀이 보기로 도움을 얻었습니다. 사실은 순회할 때 마다 슬라이싱 하지 않고, 잘라야 할 인덱스를 매번 갱신하여 마지막에 한 번에 슬라이싱 해야 했던 것입니다... 정말 어지러운 문제입니다.. 👨💻 나의 코드 function solution(a..
🚩 문제 주소 📄 접근 방법 그래프 탐색 - BFS 더보기 이 문제에 풀이 방법은 격자판이 주어지는 탐색 문제를 BFS로 푸는 흔한 풀이법과 거의 비슷합니다. 다른 부분은 방문 체크 배열을 확인만 하는 용도로 사용하지 않고, 현재 위치의 숫자에 1을 더한 숫자를 다음에 가야 하는 위치에 업데이트 하는 방식으로 사용합니다. 다음 위치의 숫자가 0이라면 방문한 적이 없는 것이므로 업데이트가 되지만, 0이 아니라면 방문한 적이 있는 것이므로 현재 위치 + 1 으로 값을 업데이트합니다. 👨💻 나의 코드 function solution(maps) { const moves = [[0,1],[0,-1],[1,0],[-1,0]]; const WIDTH = maps[0].length; const HEIGHT = map..
🚩 문제 주소 📄 접근 방법 그래프 탐색 - DFS 더보기 DFS 함수 탈출 조건 depth가 주어진 numbers배열의 길이와 같아지면 재귀를 종료합니다. 그런데 종료하기전에 조건을 하나 판단합니다. 지금까지 구한 숫자의 합이 주어진 target과 같다면 answer를 1 늘려줍니다. 종료 조건에 만족하지 않는다면 dfs 함수를 2번 씩 재귀 호출합니다. depth를 1 늘려주고, 합에 숫자를 더하거나 뺍니다. 👨💻 나의 코드 function solution(numbers, target) { let answer = 0; const dfs = (depth, sum) => { if (depth === numbers.length) { if (sum === target) answer++; return; } ..
🚩 문제 주소 📄 접근 방법 구현 더보기 먼저 width, height와 시작 좌표를 구해줍니다. 주어진 방향에 따라 조건을 나누어 줍니다. - 현재 위치 좌표에 주어진 숫자를 더합니다. - 범위를 넘어갔으면 바로 break 합니다. - 범위 내 라면, 주어진 방향이 W, E일 경우 현재 위치와 더한 위치까지 slice를 합니다. N, S일 경우는 세로 slice를 해야하기 때문에 저는 그냥 배열에 push를 해주었습니다. - 만들어진 배열에 X가 없다면 현재 위치를 업데이트합니다. 현재 위치를 반환합니다. 👨💻 나의 코드 function solution(park, routes) { // width, height 정의 const [WIDTH, HEIGHT] = [park[0].length, park.l..