본문 바로가기

코딩테스트연습24

[알고리즘] 프로그래머스 햄버거 만들기 알게된 내용 forEach, Stack, Slice 1. 조건 주어진 배열의 길이는 최대 1,000,000 까지 갈 수 있다. 그래서 좀 시간 초과가 날듯 말듯... 애매했던것같다. 결과적으론 시간초과 났음 ㅋ 순차적으로 배열을 진행시키면서 조건에 맞는 부분들을 빼는것으로 이 문제의 해답은 Stack(스택)을 활용하면 쉽게 풀 수 있다. 2. 풀이 과정 처음에는 진짜 망나니마냥 무식하게 함수 만들어서 while문 뺑뺑이를 돌렸다. 진짜 ㄹㅇ ㅋㅋ 이후에 계속해서 코드를 고쳐나가다가 시간초과를 10개정도에서 4개로 줄였다. 이게 맞나 싶었다. 오랜시간 잡고있다가 이제 다른 풀이를 찾아보았는데 Stack(스택)을 풀면 끝나는 거였다. 굉장히 간단했다. 3. 코드 function solution(ingredi.. 2023. 2. 2.
[알고리즘] 프로그래머스 옹알이(2) 1. 조건 시간 복잡도는 그렇게 크게 중요해 보이진않았다. 그래서인지 숨어있는 예외를 잘 찾아내고 어떻게 해결할지가 관건인것같다. 2. 풀이과정 최근에 풀어본 문제랑 비슷해서 정규표현식을 사용하지 않더라도 금방 풀 수 있을거라 생각했다. 하 근데 예외처리 하는게 생각 이상으로 까다로웠다... 똑같은 옹알이를 했을 때 어떻게 그 예외를 잡아낼지... 흠 이게 왜 레벨 1? 결국 혼자 못풀었다. 3. 풀이 function solution(babbling) { const words = ["aya", "ye", "woo", "ma"]; let answer = 0; babbling.map((babble) => { words.map((word) => { if (babble.includes(word.repeat(2).. 2023. 2. 1.
[알고리즘] 프로그래머스 숫자 문자열과 영단어 1. 조건 주어진 문자열에서 zero, one, two, ..., nine 와 같은 문자를 숫자 0, 1, 2, ..., 9로 바꾸어서 number형태로 return 해주면 된다. 2. 풀이 과정 그냥 딱봐도 정규표현식 쓰라는것같은데 많이 써본 경험이 없어서 이것저것 찾아보느라 시간이 생각 이상으로 오래걸렸다. 그리고 replace라는 고차함수도 처음 활용해 보았다. (기억나는 부분 한정으로...) 추가: 굳이 정규표현식 안써도 되더라... (4번 참고) 3. 내 코드 function solution(s) { const regexes = [ /zero/gi, /one/gi, /two/gi, /three/gi, /four/gi, /five/gi, /six/gi, /seven/gi, /eight/gi, /n.. 2023. 1. 31.
[알고리즘] 프로그래머스 콜라 문제 1. 조건 단순 구현 문제이다. 그렇게 숫자 크기가 크지도 않고 크기가 큰 배열을 주는것도 아니다. 2. 풀이 과정 n개의 콜라병이 있다고 할때 a개의 빈 콜라병을 가져다주면 b개의 콜라병을 준다고 한다. 그럼 총 받을 수 있는 콜라병의 갯수 result개를 return 하면 된다. 3. 내 코드 function solution(a, b, n) { let result = 0; while (n >= a) { result += parseInt(n / a) * b; n = parseInt(n / a) * b + (n % a); } return result; } 2023. 1. 30.
[알고리즘] 프로그래머스 삼총사 1. 조건 배열이 주어진다. 배열의 길이는 최대 13이라고 한다. 13에 3 조합을 해도 최대 경우의수는 286이므로 부루탈포스로 조져도 될 것 같다. 2. 풀이 과정 진짜 그냥 무지성 3중 for문 했더니 문제는 풀렸다. 하지만 이대로 Git에 커밋푸시를 하려고 보니 코드가 너무 더러워 보였다. 그래서 javascript의 고차함수 reduce를 활용해보기로 했다. (reduce에 대해서 잘 모르기도 하고 클린 코드를 실천할 수 있다는 생각에 망설임 없이 바로 진행했다.) 3. 내 코드 (reduce 활용) 학생 3명이 모이면 reduce를 활용해서 배열을 순회하며 숫자를 더하는 방식이다. 그리고 내가 싫어 하는 재귀함수가 사용됐다. function solution(number) { let result.. 2023. 1. 29.
[알고리즘] 프로그래머스 숫자 짝꿍 1. 조건 우선 X, Y의 길이는 각각 최대 3,000,000이 될 수 있다. 그러므로 아무생각없이 뇌를 비우고 X, Y를 가지고 정렬하고 filter 몇 번씩 돌리면서 구현했다가는 '시간 초과'에 뚜들겨 맞을 가능성이 크다. 내가 그랬다. 2. 풀이과정 앞서 말했듯이 나는 생각없이 조건을 제대로 읽지않고 구현하다 '시간 초과'와 마주하게되었다. 실제로 해당 문제에서 X, Y에 각각 split(" ")과 내림차순 정렬만 작성하고 채점버튼을 누르면 다음과 같은 시간이 나온다. 그러므로 나는 먼저 split을 활용하여 X, Y를 각각 배열로 만들고 고차 함수 filter와 for문을 통해 0부터 9까지 X, Y의 공통되는 숫자를 배열 answer에 순서대로 담았다. 그리고 answer를 내림차순 정렬 및 j.. 2023. 1. 27.