반응형

JavaScript 209

백준 1339: 단어 수학 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/1339 문제 풀이 이건 정말 아이디어가 필요했다. 난 정~ 말 복잡하게 풀었었는데, 해법을 보고 머리를 탁 ~ 쳤다 ! 앞으로 비슷한 문제가 있다면 이런 접근을 활용해야 겠다   이 문제는 사실 두개를 고려해야 하는데 우선순위가 높을 수록 높은 숫자를 받는 것이라고 할 때, - 높은 자리에 있을 수록 (십의 자리 > 일의 자리) 우선순위가 올라간다. - 빈번하게 나타날 수록 (만약 십의 자리에 있는 문자가 'A', 'B'가 있을 때, 만약 A가 일의 자리에 B보다 더 많이 나타났다면)우선순위가 올라간다. 이 복잡한 셈처럼 보이는 것이 아주 ~ 간단한 아이디어로 쉽게 풀린다.  "각 문자를 돌면서 해당 문자가 있는 자리수를 계속 더해주는..

백준 2110: 공유기 설치 - javascript(이진탐색, 그리디)

문제 출처 https://www.acmicpc.net/problem/2110 정답 풀이 흠 이 문제의 입력값을 봐보자. 집의 개수는 무려 (2공유기의 개수는 (2집의 좌표는 (0 엄청난 범위,,, 어떤 알고리즘이 생각나는가?이진탐색 !!!  이진탐색은 어떤 값을 기준으로 탐색해나갈 것인가가 중요하다. 여기서는 `공유기 사이의 최대거리`를 기준으로 탐색하면 되겠다.  공유기 사이가 될 수 있는 범위는 (1이상 ~ 가장 마지막 집 - 가장 첫번째 집) 이 될 것이다. 아래 그림을 보면 이해가 쉽다.   정리하자면,  - 공유기 거리의 최솟값은 : 1 - 공유기 거리의 최댓값은 :  마지막 집 위치 - 첫번째 집 위치    이제 문제를 두 부분으로 나눠서 생각하면 된다. - 공유기 최대 거리를 이진탐색으로 찾..

프로그래머스: 자물쇠와 열쇠 - javascript(단순 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 이런 문제는 시간을 두고 본인이 해결할 때까지 다른 사람이 푼 코드를 보지 않는다면 좋겠다. 어떤 특별한 알고리즘이 필요한 것이 아니라서,, 자기가 끈질기게 구현해보는 연습을 할 수 있는 좋은 문제인 것 같다.  하지만 이 정도의 아이디어는 얻고 혼자 풀면 좋을 것 같은데 아래 그림과 같이 주어진 lock을 가로, 세로 3배씩 확장시킨 그래프로 생각하는 것이다. 그래서 거기서 k..

프로그래머스: 매칭 점수 - 실수 축제 (중괄호랑 return)

아래와 같이 작성했을 때, idx를 찾지 못한 것을 발견했다. let urlIdx = pageArr.findIndex((p) => { p.match(//gi)}) 이유) - 화살표 함수가 중괄호로 감싸져 있기 때문 - 중괄호를 사용하면 명시적으로 `return` 키워드를 사용하지 않는 한, 함수는 'undefined'를 반환한다. - 이 경우, p.match()이 부분의 결과가 반환되지 않으므로, findIndex는 항상 -1를 받고 -1를 반환한다. let urlIdx = pageArr.findIndex((p) => { return p.match(/  그래서 return 을 명시적으로 추가해줘야 한다.  혹은  중괄호를 쓰지 않는 방법이 있다.  let urlIdx = pageArr.fin..

프로그래머스: [3차] 자동완성 - javascript(체이닝, 트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/17685 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이  아무래도, 다른 블로그의 설명이 충분하지 않았다. 그래서 혼자 이해하려고 하는데 시간이 꽤 걸렸다. 그래서 기록으로 자세히 남겨보려 한다.  자, 이 문제는 두개의 과정으로 나뉜다. - 먼저 주어진 words를 활용해서 트리를 생성할 것이다. - 우리가 생성한 트리를 탐색하면서 각 문자가 몇 글자까지 입력해야 하는지 셀 것이다.  코드를 살펴보기 전에 먼저 이해부터 하자.  ##..

프로그래머스: 무지의 먹방 라이브 - javascript(반복문 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 1. 총 음식 시간을 계산 const total = food_times.reduce((a,c) => a+c , 0)if(total - food_times 배열의 모든 요소를 더해서 총 음식을 먹는 시간을 계산한다. - 총 시간이 k보다 작거나 같으면 모든 음식을 다 먹었기 때문에 -1을 반환한다. 2. 음식 시간과 인덱스를 페어로 저장 및 정렬 food_times = food_t..

프로그래머스: n+1 카드게임 - javascript(구현, 조합)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258707 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트음, 이 문제는 카드를 선택하고, 넣고 , 빼고 이런식으로 접근하면 절대 못 풀 것 같다. 일단 평범한 나는 그렇다 !! 그 이유는 문제 예시를 봐보자. 1라운드에서 뽑을 수 있는 카드 1,10 이 있다고 치자. 이거를 keep 해놨다가 갑자기 3라운드에서 쓸 수 있는 게임이다. => 이걸 어떤식으로 표현할지,,,? 난 모르겠다 ;;  그리고, 두번째 이유로는 문제를 계속 ..

프로그래머스: 주사위 고르기 - javascript(조합, dfs, 이분탐색)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr전체 흐름 아무래도 문제의 전체흐름과 어떤 알고리즘을 사용했는지부터 짚고 가는 것이 좋겠다.  1. 주사위 선택하기- 조합 함수를 사용했다.  - ex) n이 4일 때, 주사위는 1,2,3,4가 있다. => 내가 주사위를 선택할 경우의 수는 "[1,2], [1,3],[1,4],[2,3],[2,4],[3,4]" 인 경우가 될 것이다.  2. 선택할 주사위 중 각각 하나의 수 선택하기 - df..

프로그래머스- 신규 아이디 추천 (정규식)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 코드 function solution(new_id) { const answer = new_id .toLowerCase() // 1 .replace(/[^\w-_.]/g, '') // 2 .replace(/\.+/g, '.') // 3 .replace(/^\.|\.$/g, '') // 4 .replace(/^$/,..

삽입 정렬 알고리즘

삽입정렬 - 각 숫자를 적절한 위치에 삽입하는 방법 - 필요한 때만 위치를 바꾼다. (선택 정렬과 버블정렬보다 더 빠름) - 시간 복잡도 O(N^2)- 기본적으로 i이전의 값들이 정렬이 되어있다고 가정- 특정한 경우에는 굉장히 빠르게 작동   - 거의 정렬된 상태에 한해서는 어떤 알고리즘보다 빠름 정리) 시간복잡도 O(N^2)를 가지는 정렬 알고리즘 : 선택 정렬, 버블 정렬, 삽입 정렬  내가 작성한 코드 function insertSort(arr){ for(let i=1; i value){ let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; j-- }..

반응형