알고리즘(50)
-
[JS] 괄호 회전하기
큐 문제입니다. 큐 안에 커스텀 함수 하나만 만들어주면 인생 편해지더라구요. 같이 풀어보시죠! 문제 요약 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요. s length "[](){}" 3 "}]()[{" 2 "[)(]" 0 "}}}" 0 접근법 위에 설명한 대로 큐를 이용해볼 겁니다. 일단 s 요소 그대로 큐에 다 넣어줍니다. 반복문 안에서 일단 다 올바른 괄호인지 체크해주고, dequeue한 값을 다시 enqueue 해주면 되겠군요. 다 올바른 괄호인지 체크해주는 부분이 핵심로직입니다. 정답..
2022.07.21 -
[JS] 후보키 - every를 아시나요?
안녕하세요. 오늘 다뤄볼껀 2019 카카오 블라인드 채용 기출문제인 후보키입니다. 카카오 문제는 역시 장황하네요. 자 다들 잘 푸셨나요? 같이 한번 보죠 문제 요약 아래와 같은 학생들의 인적사항이 주어졌을 때, 후보 키의 최대 개수를 구하라. 유일성과 최소성을 만족하는 키를 모두 구하시오. relation result [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 접근방법 일단 입력이 2중 배열로 되어있네요. 사실 어떤 칼럼을 키로 정했다면 나..
2022.07.20 -
[JS] 게임맵 최단거리 - 미뤄뒀던 BFS에 대해
이 문제는 정말 정석적인 재귀함수 문제입니다. 뭔가 계속 관성적으로 dfs를 쓰다보니 (사실 bfs는 큐를 사용하기 때문에 생각하기 싫은 것도 있었어요.) 효율성 테스트가 통과가 안되더라구요. 일단 같이 한번 풀어봐요! 문제 요약 게임을 하려고 합니다. [0, 0]에서 좌표의 끝지점까지 가는 최소 거리를 구해주세요! 문제 해석 전 처음에 dfs를 사용했습니다. 항상 dfs 사용할 때 return 값때문에 뭔가 잘 생각이 팍 안나는 편인데 다른 분들 코드에서 영감을 얻어서 solution 함수 안에 구현해줬는데요. 일단 dfs 코드 먼저 보시죠. 정답 코드(DFS) function check (row, col, maxRow, maxCol) { if (row < 0 || col < 0 || row === m..
2022.07.19 -
[JS] 소수찾기 - 부제: 이거 외되.......? (진짜 모름)
여러분들 정말 자바스크립트의 기묘한 걸 찾아냈습니다. 혹시 왜이런지 아시는 분 있으면 알려주시면 너무 좋을 것 같아요. 오늘 풀어볼 문제는 프로그래머스 Level 2의 소수 찾기 입니다. 일단 같이 한번 볼까요? 문제 요약 numbers return "17" 3 "011" 2 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0,..
2022.07.18 -
[JS] 빛의 경로 사이클
진짜 레벨 2중에 가장 어려운 것 같아요. 체감상... 그냥 상하좌우로 경로따라가다가 그냥 머리까지 돌아가버림ㄹㅇ 거의 하루종일 이거만 했네요. 다들 잘 푸셨나요? 같이 한번 찬찬히 살펴봐요! 문제 요약 grid result ["SL","LR"] [16] ["S"] [1,1,1,1] ["R","R"] [4,4] 이 노드들로 들어오는 빛의 방향에 따라 거울처럼 반사됩니다. 왼쪽에서 빛을 쐈을 때 각각 이런 식으로 동작합니다. S 노드: 그대로 통과시키고, col을 1 늘려줍니다. L 노드: 왼쪽으로 들어온 빛 기준으로 좌회전합니다. 그래서 위쪽으로 갑니다. row를 1빼줍니다. R 노드: 왼쪽으로 들어온 빛 기준으로 우회전합니다. 그래서 아래쪽으로 갑니다. row를 1 더해줍니다. 결국 계속 반사되면서 처..
2022.07.17 -
[JS] 프린터
큐에 관한 문제입니다. 저만 그런지 모르겠는데 이 문제 처음 읽으면 최우선순위 작업물 프린트하고 그 순서대로 나올 것 같지 않나요? 뒤에 설명하겠지만, 팁은 우선순위별로 계속 갱신시켜줘야합니다. 다들 푸셨나요? 같이 한번 살펴봐요! 문제 요약 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. priorities location return [2, 1, 3, 2] 2 1 [1, 1, 9, 1, 1, 1] 0 5 문제 해석 전 처음에 그냥 priorities 배열에서 cursor를 1씩이동하는 루프를 썼었는데요. 이러면 최우선순위..
2022.07.16