목록코딩테스트 (17)
nueijeel
📌 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다.다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다.아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이디..
📌 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 📌 작성한 코드 def solution(strings, n): return sorted(strings,key=lambda x: (x[n],x)) 람다식으로 깔끔하게 정리된 코드가 나왔다!! 학교에서 처음 코테 수업 들을때 람다식만 나오면 어질어질해졌는데.. 시험대비로 한번 쫙 공부해뒀던게 이렇게 쓸모가 있다니(역시 세상에 쓸모없는 경험은 없다...) sorted() 함수에 정렬할 리스트를 매개..
📌 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 📌 작성한 코드 def solution(participant, completion): d = dict.fromkeys(participant,0) for i in participant: if i in d: d[i]+=1 for k in completion: if k in d: d[k]-=1 answer = [k for k,v in d.items() if v==1..
문제 설명 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return하는 solution 함수를 완성해주세요. 문제를 보자마자 itertools 라이브러리의 combinations 함수를 이용해야겠다고 생각했다. 페이지 내에 제공된 힌트도 조합 공식이었다. Hint 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다. 작성한 코드 1 from itertools import combinations def solution(balls, share): answer = list(..
문제 설명 머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board 이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요. 해결 단계 원점 설정 문자열 배열인 keyinput의 요소들을 차례로 하나씩 right, left, ..
문제 설명 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요. 해결 단계 "a는 0, b는 1, c는 2, ..., j는" 을 보자마자 dictionary형 변수를 사용해야겠다고 생각했다. 다만 값을 비교해야하는 age가 int형 변수이기 때문에 문자열로 바꾸는 과정을 거친 후, 비교해야 한다. 작성한 코드 def ..
문제 설명 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 해결 단계 코드를 작성하다가 예전에 계수정렬 배웠던 내용이 생각나서 count 배열을 이용해 해결해보았다. 1. 정수 배열 array를 오름차순으로 정렬(이미 정렬된 배열을 주는건지는 모르겠으나 일단 정렬해줌) 2. 정렬된 array의 맨 마지막 요소를 길이로 하는 배열 선언 및 초기화 3. for 문을 통해 array에 있는 요소 당 등장 횟수를 count 배열에 저장 4. count 배열의 값과 인덱스 모두 접근해야하므로 dictionary 자료형 변수에 저장 5. if..