본문 바로가기

알고리즘/📌programmers4

[카카오 2018] 방금 그 곡 📌문제 시간과 문자열을 포함하는 배열이 주어진다. 예시 : ["12:00,12:14,HELLO,CDEFGAB", "13:00,13:05,WORLD,ABCDEF"] 배열의 3번째 원소는 해당 곡의 이름, 4번째 원소는 해당 곡의 연주 순서이다. 해당 곡은 12:14 - 12:00 = 14 만큼 반복된다. 반복의 의미는 CDEFGAB CDEFGAB CD 와 같이 총 14번의 loop를 돈다는 의미이다. 해당 배열과 함께 문자열 m이 주어진다. 문자열 m과 일치하는 곡이 어느 곡인지 출력하라. ▸문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17683 📌문제 풀이 해당 문제에서는 C#과 같이 음표가 1음절이 아니라, 2음절이 생길 수 있다. 해당 음표는 .. 2022. 1. 17.
[Stack] 표 편집 📌 문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/81303 문제 난이도 : level 3 문제 유형 : Double LinkedList, Stack 📌 문제 풀이 - First Try : 틀린풀이 : 배열 이용 ▸ 풀이 과정 문제 지문 자체는 쉬운데, 많이 어렵게 느껴졌던 문제다. 처음에는 순진하게(naive) 생각해서 해당 순서의 값을 배열로 설정했다. 그래서 만약 n=7이라고 하면 아래와 같은 그림을 생각했다. 만약 C 명령어 ( 삭제 ) 가 들어올 경우, 해당 칸의 속성을 false로 만들고, 아래 칸으로 내려가는 로직을 생각했다. 만약 Command가 U/D일 경우, false를 건너뛰고 count를 센다. 위와 같은 풀이로 처음 .. 2021. 12. 23.
[Heap] 디스크 컨트롤러 📌 문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42627 문제 난이도 : level 3 문제 유형 : 우선순위 큐 ( PriorityQueue ) 문제 요약 : SJF 알고리즘을 통해 프로세스가 움직인다. 프로세스들의 응답시간의 평균값을 반환하라. 📌 풀이 문제도 직관적이고, 풀이도 쉽게 생각나는 문제이지만 개인적으로는 많이 헤맸다. 풀이는 다음과 같다. pq1 = 시간순으로 먼저 들어온 값이 우선 정렬값을 가진다 int[] 배열의 값으로 queue안에 값이 들어간다. arr[0] = 시작 시간 // arr[1] = 걸리는 시간 pq2 = 걸리는 시간순으로 우선 정렬값을 가진다. ▸ 헷갈렸던 부분 while(pq2.isEmpty()) p.. 2021. 12. 22.
[해시] 전화번호 목록 lv.2 📌 문제 위와 같이 각 사람당 하나의 번호를 갖고 있다고 가정하자. 구조대의 번호는 지영석 번호의 앞자리 3자리와 같다. 이와 같은 상황에서, 구조대는 지영석 번호의 접두어이다. 접두어가 있는 경우 false, 없는 경우 true를 return 하라. 📌 풀이 🔥 생각1 - 완탐 ( Fail ) brute force로 풀 수 있는가? for loop를 2번 돌면서, 완탐을 해보자. N^2은 안된다. 좀 더 효율적인 방법을 생각해보자. 🔥 생각 2 - 아이디어 문제의 상황을 잘 들여다봐 보자. 어떤 수가 다른 수의 접두사가 되려면, 정렬했을 때 해당 수보다 무조건 앞에 있어야 한다. ex) 123 1235 1234533539 ... 그래서 정렬 후에, for loop을 돌면서 해당 수가 다음 수에 대해 접.. 2021. 10. 13.