알고리즘/프로그래머스(51)
-
Level 2️⃣ - 연속된 부분수열의 합(Feat. 투포인터)
투포인터 투 포인터와 관련된 기본 문제는 아래 링크에 정리해두었다. 문제에서도 언급되지만 정렬이 되어있다는 조건을 잘 확인하자. https://ukgi-dev.tistory.com/16 투 포인터 알고리즘 - 개념정리 투포인터 알고리즘 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 목표값을 구하는 테크닉이다. 흔히 2,3,4,5,6,7번 학생을 지목해야 할 때 간단하게 2번부터 7번까지의 학 ukgi-dev.tistory.com 🚀문제 접근 무식하게 접근하는 방법이 있다. 물론 처음에는 이 방법도 생각나지 않았지만... 2 3 6 5 1 2가 맨 앞에 올 때 연속 부분수열, 3이 맨 앞에 올 때 연속 부분수열, 6이 맨 앞에 올 때 연속 부분수열 ... 이렇게 이중 for문을 돌려서..
2024.04.10 -
Level 2️⃣ - 삼각 달팽이
https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀문제 접근 첫 행부터 마지막 행까지 모두 순서대로 합친 배열을 반환하기 위해서 이차원 배열로 표현했다. 값은 배열에 요소를 채워나갈때마다 1씩 더해지고, 값이 들어가야되는 위치는 처음에는 y축에서 양의 방향으로 n번 반복하면서 1씩 커지게 된다. [0, 0] ➡ [1, 0] ➡ [2, 0] ➡ [3, 0], n이 4일때 총 4번 반복하게 된다. 그리고 x축에서 양의 방향으로 n-1번 반복하면서 ..
2024.04.10 -
Level 2️⃣ - 두 큐 합 같게 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀접근 방법 직접 Map 자료형을 이용해 큐를 구현해서 해결하려했지만 시간초과가 계속 나왔다. 요소를 자료형에 저장하는 것이 아니라 포인터로 해결하는 방법이 더 효율적인 방법이었다. 오답 코드 (시간초과) class Queue { constructor() { this.storage = new Map(); this.front = 0; this.rear = 0; } size() { return th..
2024.04.09 -
Level 2️⃣ - 프렌즈 4블록
https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀접근 방법 4방향 탐색을 해서 같은 요소들이 2*2 크기에 있다면 해당 좌표를 저장하고 0으로 채운다. 그리고 블록을 아래로 떨궈 빈 공간을 메꾸면 되는데 이 부분의 구현이 가장 힘들었다. function solve(i, j, board){ const pick = board[i][j]; if(pick && pick === board[i][j+1] && pick === board[i+1][j] &..
2024.04.08 -
Level 2️⃣ - 2개 이하로 다른 비트
https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀첫번째 접근 방법 아주 직관적으로 해결하고자 했다. 우선 x를 toString을 이용해 이진법으로 변경한다. 그리고 for문을 돌면서 x보다 큰 수를 이진법으로 변경한 후에 각각의 자리가 맞는지를 일일히 확인한다. 체크 변수를 만들어 자리가 맞으면 체크 변수를 하나씩 늘려준다. 만일 체크 변수의 값이 3이 넘어가면 다음 숫자로 넘어간다. function solution(numbers) { let..
2024.04.08 -
Level 2️⃣ - 숫자 변환하기
https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀문제 해석 사용할 수 있는 연산은 세가지이다. - X에 n을 더한다. - X에 2를 곱한다. - X에 3을 곱한다. 따라서 다음과 같은 그래프 그림으로 표현할 수 있다. 따라서 BFS를 구현해서 최단거리를 구하려고 시도했다. function solution(x, y, n) { let visited = Array.from({length: 1_000_001}).fill(0); function bf..
2024.04.08