programmers

programmers

[Programmers Level 1] 대충 만든 자판 Javascript

⚡문제정보 나온지 얼마 안된 문제여서 흥미롭게 풀어봤습니다. 입출력 예시를 보면 직관적으로 감이 오는데 keymap과 target이 주어집니다. 키하나에 여러 문자가 할당된 경우에 동일한 키를 연속해서 누르면 할당순서대로 문자가 바뀐다는 것입니다. ABACD 와 같은 형태의 키맵이있다면 한번 눌렀을때 A 두번은 B 세번은 A 이런식인거죠! 문제는 이렇게 키맵이 주어져있는데 최소한으로만 버튼을 눌러서 타겟값을 만들고싶다는 것입니다. 그리고 그와중에도 타겟값을 만들 수 없는 경우(모든 알파벳이 없으니 그런 경우도 있을 수 있겠죠?) -1을 리턴해야하며 주어지는 키맵에 알파벳이 한개로 고유하지 않다는 조건이 있습니다. 이런 와중에 문제의 요구사항인 최소한의 클릭으로 값을 구하려면 1. 타겟값이 원하는 알파벳이..

programmers

[Programmers Level 2] 모음사전 Javascript

⚡문제정보 역시 완전 탐색 문제입니다. A부터 E까지 순서대로 적혀있는데 단어가 주어지면 그 순서를 맞춰주면 됩니다. A 1 AA 2 AAA 3 AAAA 4 AAAAA 5 대충 이런흐름으로 올라가는군요 sort()메서드를 통해 서순은 해결해줄 수 있긴한데 재귀적으로... 저 값들을 만들어보고싶습니다. 🔍접근방법 1. 재귀적으로 접근하여 모든 경우의 수를 담은 배열을 만든다. 2. sort 메서드를 이용해 정렬해준다. 3. 정렬된 배열에서 주어진 매개변수와 일치하는 인덱스를 찾는다. 4. 정답 😑나의 풀이라기보단 GPT의 풀이에 가까운 function solution(word) { let answer = [] let aeiou = ['A','E','I','O','U'] function maker(n,wor..

programmers

[Programmers Level 2] 피로도 Javascript

⚡문제정보 제 통곡의 벽인 완전탐색을 해야하는 문제입니다. k라는 내 초기 피로도가 주어지고 던전을 최대한 많이 돌아야하는 건데 이건 던파 많이해보신 분들은 아시겠지만 피로도를 극한까지 아꼈다가 최대한 소모피로도가 큰 던전을 가는게 제일 이득이죠 가장 많은 던전을 방문할 수 있는 경우의 수를 찾아야하는 문제인데 여기서 최소 필요 피로도라는 개념이 있어서 내 현재 피로도가 최소 필요 피로도보다 낮으면 던전에 방문할 수 없는 제한조건까지 걸려있습니다. 조건이 까다로우니 탐욕법같은건 적용하기 애매하겠고 그냥 맘편히 다 찾아보는게 제일 답을 찾기 좋겠네요 조건을 보면 던전의 최대 갯수도 8개뿐이니까 충분히 완전탐색을 돌릴만 해보입니다. 🔍접근방법 다 푼 사람의 블로그를 참고한다. https://leejams.g..

programmers

[Programmers Level 1] 덧칠하기 Javascript

⚡문제정보 대충 이런 문제인데 처음 생각한 로직으로 풀려다가 구현이 안되어서 오랜시간 막혔습니다. 처음 구상은 포인터를 하나 두고 arr[i] - pointer값이 m보다 크거나 같으면 answer를 올리는 식으로 구상했는데 그렇게 짜니 안되는 케이스가 생겼어요 결국 맨처음에 떠올릴 수 있던 무식하게 순회하기를 선택하고 풀었읍니다. 🔍접근방법 1. 정직하게 배열을 주어진 길이만큼 만들고 true로 가득채워준다. 2. section에 주어진 값과 매칭되는 인덱스에 false를 할당한다. 3. false를 만나면 m - 1값만큼 인덱스를 점프시키고 answer값을 올려준다. 😑나의 풀이 function solution(n, m, section) { let answer = 0 let arr = new Arra..

programmers

[Programmers Level 1] 바탕화면 정리 Javascript

⚡문제정보 지금 기준 최신으로 나온 문제 중 하나입니다. 문제가 정말...더럽게 길지만. 여러분들의 시간을 위해 문제를 요약하자면 이렇습니다. 한번의 드래그로 모든 파일을 버리고 싶다. 근데 최소한의 드래그로 버릴 방법을 찾아줘라 반환은 [y,x , y ,x] 좌표 형식으로 반환해라. 입출력을 보면 직관적입니다. 그냥 .은 비어있는걸 뜻하고 #은 파일이 있는걸 뜻합니다. 그리고 반환은 [y축에서 가장 작은값, x축에서 가장 작은값, y축에서 가장 큰값 +1 , x축에서 가장 큰값 +1] 을 반환하면된다... 문제가 너무 어지럽게 길어서 문제를 파악하고 여기까지 생각이 도달하는 것이 어렵지 구현 자체는 쉬워서 1레벨이 아닌가... 생각해봅니다. 🔍접근방법 1레벨이니까 브루트포스해도 되겠지 뭐기도했지만 x,..

programmers

[Programmers Level 2 집합] [1차] 뉴스 클러스터링 Javascript

⚡문제정보 문제가 아주 깁니다만 아래를 보면 감이 오실겁니다. 요약하자면 문제는 이렇습니다. 1. string 두개가 매개변수로 들어온다. 2. 들어온 문자열은 두글자씩 끊어서 만드는데 알파벳으로된 쌍만 유효하다. 3. 대소문자는 구분하지 않는다. 4. *****다중집합을 허용한다 5. 교집합 / 합집합 * 65536을 한 값을 리턴해라 6. 만약 교집합도 없고 합집합도 없다면 1 * 65536을 리턴해라 🔍접근방법 1. 우선 알파벳쌍만 유효하게 처리하기 때문에 알파벳이 아닌 값들을 걸러줄 정규표현식이 있으면 좋겠습니다. 2. 교집합과 합집합을 구현해야 합니다. 3. 다중집합을 고려해야합니다 따라서 자바스크립트의 set을 사용하는데에는 제한사항이 있습니다. set은 중복을 허용하지 않기 때문입니다. 4...

programmers

[Programmers Level 3] 야근지수 Javascript

⚡문제정보 제가 멍청해서 그런건진 몰라도 문제 설명이 너무 간략해서 이해가 안되었습니다. 생각을 해보면 야근지수는 제곱해서 계산하니까 최대한 값을 평탄화 시켜주는게 포인트인 문제입니다. 주어지는 매개변수 n만큼 works에서 시간을 뺄 수 있는구조인데 당연하지만 제곱을 하게되면 값이 기하급수적으로 커지니 주어진 자원으로 최대한 평탄화 작업을 해줘야하는 문제네요 예컨대 [4,3,3]이면서 내게 주어진 n이 4라면 4 -2 / 3-1 / 3-1을 해줘서 모든 값을 2로 맞춰주는게 최선일것입니다. 🔍접근방법 이거 뭐 쉽게 구현할 수 있지않나?하고 생각해봤는데 제가 쉽게 떠올릴 수 있는 방법들은 시간복잡도가 너무 커지는 방법들이었고.. 검색을 살짝 해본 결과 이 문제는 3레벨 답게 빡빡한 효율성 테스트를 거치기..

programmers

[Programmers Level 2] 스킬트리 Javascript

⚡문제정보 선행스킬의 순서를 담고있는 문자열 skill과 유저가 찍고자하는 스킬트리가 담긴 배열 skill_trees가 주어집니다. 스킬트리에는 선행스킬이 존재하지않는 스킬도 존재합니다. 선행스킬이 존재하지 않는 스킬은 아무렇게나 찍을 수 있지만 선행스킬이 명시된 스킬은 반드시 순서에 맞추어 스킬을 배워야합니다. 가능한 스킬트리의 갯수를 반환하면 되는 문제입니다. 🔍접근방법 선행스킬에 존재하지 않는 스킬은 아무 영향도 주지 않으니까 삭제해주고 선행스킬만 남겨서 비교하면 쉽게 답을 구할 수 있을 것 같습니다. 🔍나의 풀이 function solution(skill, skill_trees) { skill = skill.split("") let set = new Set(skill) let answer = 0 ..

냠냠맨
'programmers' 카테고리의 글 목록