코딩테스트 11

[백준] 그룹 단어 체커 (JS)

문제https://www.acmicpc.net/problem/1316그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.입력첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.출력첫째 줄에 그룹 단어의 개수를 출력한다.풀이1. 스..

코딩테스트 2024.10.16

[백준] 회의실 배정 (JS)

문제https://www.acmicpc.net/problem/1931한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.입력첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간..

코딩테스트 2024.10.12

가장 작은 양의 정수 (JS)

문제주어진 N개의 정수로 이루어진 배열 A가 있을 때, 배열 A에 등장하지 않는 가장 작은 양의 정수(0보다 큰)를 반환하는 함수를 작성하라는 문제입니다.이 문제는 배열 A에서 찾을 수 없는 가장 작은 양의 정수를 찾아내는 것에 중점을 두고 있습니다. 예를 들어, 배열 A가 [1, 3, 6, 4, 1, 2]인 경우, 배열에 없는 가장 작은 양의 정수는 5입니다. 배열 A가 [-3, -1]인 경우, 배열에 없는 가장 작은 양의 정수는 1입니다.요약:주어진 배열 A에서 찾을 수 없는 가장 작은 양의 정수를 찾아서 반환합니다.입력배열 A가 [1, 3, 6, 4, 1, 2]인 경우출력배열에 없는 가장 작은 양의 정수는 5입니다.풀이1. Set 생성 후 A 배열에서 양의 정수만 중복 제거하여 Set에 추가한다.2..

코딩테스트 2024.10.03

[백준] 균형잡힌 세상 (JS)

문제https://www.acmicpc.net/problem/4949세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다.정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다.문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다.모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다.모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다.모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다.모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는..

코딩테스트 2024.09.28

[프로그래머스] 동영상 재생기 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) commands 배열 안 요소에 따라 현재 재생 시간 pos에서 10분을 더하거나 빼는 문제이다.  (2) 함수 getAdjustedTime 생성 후 매개 변수로 받은 시간 변수 pos의 계산 결과를 return 한다.function solution(video_len, pos, op_start, op_end, commands) { video_len = video_len.replace(":", ""); pos = pos.replace(":", ""); op_start = op_..

코딩테스트 2024.09.16

[프로그래머스] 스킬트리 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) skill_trees를 순회하면서 각 요소마다 skill에 있는 알파벳을 제외하고는 모두 지운다.  (2) 필터로 반환된 배열과 skill의 length를 똑같이 맞추고 같은 값이면 answer를 1씩 늘린다.function solution(skill, skill_trees) { const skillArr = skill.split(""); let answer = 0; skill_trees.forEach(skill => { const compareSkill ..

코딩테스트 2024.09.12

[프로그래머스] 외계어 사전 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) dic 배열의 요소 중 spell에 담긴 알파벳을 한번씩만 모두 사용하여 만든 단어가 있는지 찾아야 한다.  (2) 모든 조합의 경우의 수를 따지기 보다는 정렬된 단어 하나만 있는지 판단하면 된다.  (3) sort() 메서드를 사용하기 위해 문자열을 배열로 치환한다.function solution(spell, dic) { const sortedDic = []; spell = spell.sort().join(""); dic.forEach(v => sortedDic.push(v..

코딩테스트 2024.09.04

[프로그래머스] 전화번호 목록 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) sort() 정렬 -> 문자열로 변환된 후 유니코드 순서로 정렬되기 때문에 비교 대상의 오른쪽 값만 비교하면 된다. 오른쪽 숫자가 본인의 숫자를 접두어로 갖지 못하면 다른 숫자들도 가질 수 없다.  (2) 본인을 포함하고 있는지 여부는 startsWith 메서드를 사용한다.  (3) 접두어를 갖는 값이 발견되면 break문으로 빠져나온다.function solution(phone_book) { let answer = true; phone_book.sort(); for(l..

코딩테스트 2024.08.30

[프로그래머스] 호텔 대실 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) 1분마다 사용하는 객실의 인원수를 구하기 위해 timeArr을 0으로 초기화  (2) 한 번 사용한 객실은 퇴실 시간을 기준으로 10분 후 사용하기 때문에 endTime에 10을 더해준다  (3) 입실 시간과 퇴실 시간 사이 분마다 timeArr안 요소를 1씩 늘린다. 최종적으로 만들어진 timeArr의 최댓값이 곧 최소로 필요한 객실의 수가 된다.const getTime = (time) => { const [hour, minute] = time.split(":"); return +..

코딩테스트 2024.08.29

[프로그래머스] 방문 길이 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이*상하좌우 5 or -5를 넘어가면 안되기 때문에 5 or -5에서 초과하려 할 때 continue로 끊어준다.*시작점과 도착점을 스프레드 연산자를 이용해 같이 관리한다. (처음 걸어본 길만 구해주기 위해) 1. 시작점에서 도착점으로 이동할 때 그 경로를 변수에 저장하여 answer에 넣는다.2. answer에 있는 값과 비교하는 변수가 다른 경로일때만 answer에 그 경로를 push한다.3. for문이 끝난 후 answer에는 unique한 경로만 있으므로 answer의 length를 return한다..

코딩테스트 2024.08.28