
[Programmers] 2018 카카오 1차 캐시
2023. 12. 27. 02:17
Algorithm/문제 풀이
문제 풀이 다행히도 어찌 맞춘 문제! 이 문제에서 중요한 점은 LRU에 대한 개념을 알고 있는가 이다. LRU는 페이지가 순차적으로 들어올 때, 만약 저장 공간이 꽉 찼다면? 가장 오래된 페이지를 제거하는 것을 의미한다. 이를 코드로 생각해 보면 파이썬에서 어떤 list가 존재하고 이 list에 입력을 넣어주면서 특정 size보다 커지면 가장 오래된 값을 pop(0)을 해주면 되겠지! 이를 본 문제에 적용해 보면 cache라는 list가 존재하고 이것의 size는 cacheSize로 주어진다. 그러면 cities에 대해 반복문을 돌면서 cache에 없으면? cache에 값을 추가해 주고, cache에 존재하는 값이면? 그 값을 cache에 가장 끝으로 옮겨주면 된다. 이를 코드로 구현하면 아래와 같다...

[Programmers] 2018 카카오 3차 파일명 정렬
2023. 12. 23. 02:26
Algorithm/문제 풀이
문제 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. 버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. 예컨대 파일 목록이 ["img12.png", "img10.png", "img2.png", "img1.png"] 일 경우, 일반적인 정렬은 ["img1.png", "img10.png", "img12.png", "img2.png"] 순이 되지만, 숫자 순으로 정 된 ..

[Programmers] LV2. 카펫
2023. 12. 22. 00:59
Algorithm/문제 풀이
문제 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해 주세요. 제한사항 - 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. - 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. - 카펫의 가로길이는 세로 길이와 같거나, 세로 길이..
[Programmers] LV2. 다음 큰 숫자
2023. 12. 21. 02:44
Algorithm/문제 풀이
문제 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를 들면, 문자열 s가 "abcdcba"이면 7을 return 하고 "abacde"이면 3을 return 합니다. 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 개수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(10100..