python algorithm
-
이진 변환 반복하기python algorithm 2024. 2. 18. 19:22
0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. [문제] 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. [제한사항] s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. [풀이]..
-
캐시 크기에 따른 실행 시간 측정python algorithm 2024. 2. 18. 00:02
2018 KAKAO BLIND RECRUITMENT 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다. [문제] 어피치에게 시달리는 제이지를 도와, DB 캐시를 적용할 때 캐시 크기에 따른 실행시..
-
Python 기본 Method 및 함수 정리python algorithm 2024. 2. 17. 21:30
1. 리스트 요소 추가 # .insert() : 특정 위치에 특정 element 추가 a = [1, 2, 3] a.insert(1, 10) # index = 1에 10 추가 print(a) # [1, 10, 2, 3] # .append() : 리스트 마지막에 한 개의 element 추가 a = [1, 2, 3] a.append(10) # 마지막 index에 10 추가 print(a) # [1, 2, 3, 10] # .extend() : 리스트 마지막에 sequential elements 추가 a = [1, 2, 3] add_list = ['a', 'b', 'c'] a.extend(add_list) # 마지막 index에 add_list elements 추가 print(a) # [1, 2, 3, 'a', ..
-
다트 게임python algorithm 2024. 2. 16. 14:59
2018 KAKAO BLIND RECRUITMENT 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다. 옵션으로 스타상(*) , 아차상(#)이 존재하며 스타..
-
실패율python algorithm 2024. 2. 14. 14:51
2019 KAKAO BLIND RECURITMENT 문제 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. [문제] 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈..
-
신규 아이디 추천python algorithm 2024. 2. 13. 15:03
2021 KAKAO BLIND RECRUITMENT 문제 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 1. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 2. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 3. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같..
-
Snail Sorth Algorithmpython algorithm 2024. 2. 6. 20:47
오늘부터 매일은 아니더라도,, 일주일에 5~6문제 정도는 알고리즘 문제를 풀어보려고,, 한다,, 코딩 테스트도 준비하고, python 기본 문법도 공부할 겸 아주 쉬운 문제라도 풀어보면 좋을 것 같다. 어떻게 풀면 좋을까 생각을 해봤는데,, 잘은 모르겠다. 어쩌면 문제를 풀어나가면서 점점 좋은 방법을 찾아나가지 않을까 생각한다. 그래도 어떤 점을 초점에 두고 풀거냐 물어본다면,, 1) 파이썬의 어떤 특성을 문제 상황으로 두었는지, 2)어떤 부분을 활용해서 풀기를 원했는지를 집중해서 보려고 한다. 오늘은 snail sort algorithm 문제를 풀었는데,, 어려웠다. 하지만 좀 허무하게 풀리는 문제인 것 같아서 다리가 풀렸다. snail sort algorithm의 원리는 다음과 같다 모든 코딩 알고리..