반응형

알고리즘 문제 풀기 153

프로그래머스: [1차]셔틀버스 - javascript(센스있는 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트 1) 주어진 timetable의 시간들을 분으로 나타내고, 오름차순 정렬하자. 2) 버스가 n회 오니까 반복문을 n만큼 돌린다. - 현재 시간 9:00 를 540으로 계산한다. - 현재 시간 540보다 일찍 온 크루들이 몇명인지 센다.(canRide)      - 만약 이 크루들이 m명보다 많을 때?       => timetable에서 0부터 m만큼만 제거한다.     - ..

프로그래머스: 다단계 칫솔 판매 - javascript(구현 및 dfs)

깔끔한 문제였던 것 같다... 내가 풀었기 때문에 ^^ 좋은 문제인 것 처럼 느껴짐 ㅎㅎ  문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  1) 객체를 2개 생성 - 각 사람을 index로 활용하기 위한 map 객체 - 각 사람을 key로, 추천인을 value로 한 map 객체   2) 현재 사람의 이익을 계산하는 함수 - 현재 사람은 90% 를 가지고, 다음 추천인에게는 절사한 10%를 준다. => 즉, 추천인의 10%..

프로그래머스: 징검다리 건너기 - javascript(이분탐색)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/64062문제 풀이 힌트  단순하게 반복문으로,1) 현재 디딤돌 배열로 사람 하나 건널 수 있는지 체크 - 디딤돌 숫자가 0인 것이 연속적으로 k이상이 되면 못건넘 2) 건넜다면 각 디딤돌 숫자 -1 , 건넌 사람 수인 cnt + 13) 건너지 못했다면 그동안 건넌 친구 cnt return 하기  의 방법을 생각했다면 바로 시간 초과다.   stones 배열의 크기도 엄청난데, 디딤돌 숫자가 2억까지도 가능하다니,,, 그러면 모든 디딤돌이 2억일 때, 나는 각 배열에서 사람 하나 건널 때 -1을 2억번 해야 한다.   자, 이분탐색으로 시선을 바꿔보자.  단순 반복문으로 생각할 때는 기준이 ..

프로그래머스: 보석 쇼핑 - javascript(슬라이딩 윈도우)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트  슬라이딩 윈도우를 이용하자. 반복문 2개를 활용하면 되는데- 큰 반복문 : 윈도우 사이즈를 보석 종류 개수부터 시작해서 1씩 크게 한다. - 그 안에 작은 반복문: 해당 윈도우 사이즈 만큼 gems를 전체 돌아다니면서 조건을 만족하는지 확인한다. 조건은, Set 객체를 활용한다.  정답 풀이 코드 function solution(gems) { let set = [....

프로그래머스: 불량 사용자 - javascript(정규식, 완전탐색(dfs), 중복제거 Set)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  정답 풀이 코드 function solution(user_id, banned_id) { const selected = Array(user_id.length).fill(false); //user_id를 선택했는지 체크하는 함수 const regex = banned_id.map(id => new RegExp(`^${id.replaceAll('*', '.')}$`))..

프로그래머스: 문자열 압축 - javascript(반복문 관건)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트 01. 해당하는 s에서 단위가 될 수 있는건 1 ~ Math.ceil(s.length/2) 까지다. => 반복문을 통해 접근02. 해당하는 단위에 따라서 s를 slice를 통해 해당 idx에 해당하는 문자와 그 다음 문자를 구한다. 03. 두 문자를 비교해서 같다면, cnt+1 04. 두 문자를 비교해서 같지 않다면 지금까지 cnt랑 문자를 압축한걸 ..

프로그래머스: 거리두기 확인하기 - javascript(bfs, 규칙찾기)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  01. places 장소를 반복문을 돌면서 하나의 대기실씩 판단한다.02. 하나의 대기실에서 사람을 'P' 사람을 찾는다. 03. 그 사람의 '상, 하, 좌, 우' 를 살핀다.- 만약 사람이라면 바로 `안전하지 않음`- 만약 파티션이라면 `안전함` - 만약 책상이라면 그 책상 상하좌우를 한번 더 살펴봐야 함.     만약 책상의 상하좌우에  -- 사람이 있다면, `안전하지 ..

프로그래머스: 행렬 테두리 회전하기- javascript(그래프 회전)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 힌트 01. 2차원 배열 생성 02. 그 배열에다가 숫자를 1부터 차례대로 삽입 03. 해당 사각형 범위에 있는 숫자들을 이동 순서(위, 오른쪽, 아래, 왼쪽)대로 stack에 넣는다 - 여기서 제일 작은 값을 구할 것. - 이 값들을 이용해서 arr값을 채울 것. 04. stack의 맨 뒤에 있는 값을 제일 앞으로 빼준다. (5번에서 arr 값 채울 건데 arr[x1][y1..

프로그래머스: 수식 최대화 - javascript(정규식, 숫자 계산)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 힌트 정답 풀이 코드 function solution(expression) { //두 숫자와 연산자가 들어왔을 때 계산하는 함수 function calculator(a,b,oper) { if(oper === '+') return a+b if(oper === '-') return a-b else return a*b } //주어진 연산자의 우선순위 조합 const combinat..

프로그래머스: 메뉴 리뉴얼- javascript(재귀 이용한 조합, 객체)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 주문 목록과 코스 길이 배열을 기반으로, 각 주문에서 특정 길이의 메뉴 조합을 추출하여 가장 많이 주문된 메뉴 조합을 찾는 문제다. 주문에서 메뉴 조합 생성: 각 주문을 순회하며, 길이 n의 모든 메뉴 조합을 생성합니다. 이때 조합은 사전 순서로 정렬된 문자열로 변환합니다.조합의 빈도수 계산: 생성된 메뉴 조합을 Map에 저장하고, 빈도수를 계산합니다. 조합이 이미 존재하면..

반응형