Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 오픽표현
- 리사이클러뷰
- rebase
- merge
- 비동기처리
- 웹
- async
- react
- list
- 영어표현
- 프로그래머스
- Next.js
- 오픽
- 리덕스
- useState
- Kotlin
- redux
- javascript
- CSS
- 리액트를 다루는 기술
- 리액트
- 공부
- Git
- typescript
- 엔비디아
- 알고리즘
- useCallback
- await
- pull
- 젠슨황
Archives
- Today
- Total
공부블로그
택배 상자 꺼내기 - 프로그래머스 LV.1 (JavaScript) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
총 두가지 방법으로 풀이했다.
처음에 너무 복잡하게 생각하는 바람에 매트릭스처럼 풀었고, 두번째는 단순하게 생각했더니 짧은 코드로 풀 수 있었다.
- 첫번째 풀이 (복잡하게 푼 ver)
function solution(n, w, num) { // 전체개수 / 가로길이 / 꺼내려는 번호
var answer = 0;
function get_matrix(number, width){
// 올림으로 현재 층수 알아내기
const floor = Math.ceil(number/width)
if ((floor % 2) == 0) { // 층수가 짝수이면 왼쪽으로 커지는 층
const right = (width * floor) - number
return [floor, right + 1]
} else {
const right = number - (width * (floor - 1))
return [floor, right]
}
}
const n_matrix = get_matrix(n,w) // 최대
const num_matrix = get_matrix(num,w) // 꺼내는 박스
if ((n_matrix[0] % 2) == 0) { // 맨 위층이 왼쪽으로 증가
if (num_matrix[1] >= n_matrix[1]){
answer = n_matrix[0] - num_matrix[0] + 1
} else {
answer = n_matrix[0] - num_matrix[0]
}
} else { // 맨 위층이 오른쪽으로 증가
if (num_matrix[1] > n_matrix[1]){
answer = n_matrix[0] - num_matrix[0]
} else {
answer = n_matrix[0] - num_matrix[0] + 1
}
}
return answer;
}
- 두번째 풀이 (간단하게 푼 ver)
function solution(n, w, num) { // 전체개수 / 가로길이 / 꺼내려는 번호
var answer = 0;
// 반복문으로 하나씩 보는 게 빠를듯 100이니까!
// 지금 몇층인지 > 내 바로 위에 번호 추측 > 전체보다 작은지!!
let now = num
let count = 0
while( now < n ){
let floor = Math.ceil(now / w) // 시작 층
let from_right = now - ((floor-1)*w) // 2
let gap = w - from_right // 6-2 = 4
let new_now = now + gap*2 + 1 // 내 위에 층 번호
if (n >= new_now ) {
count += 1
}
now = new_now
}
return count + 1;
}'공부하기 > 알고리즘' 카테고리의 다른 글
| 유연근무제 - 프로그래머스 LV.1 (JavaScript) (0) | 2025.11.23 |
|---|---|
| 프로그래머스 - [ 개인정보 수집 유효기간 ] (1) | 2023.04.18 |