https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 해설 : 5x5의 2차원 배열로 이루어진 인형뽑기 게임에서 같은 인형을 2번 연속 뽑을경우 2점을 얻는 게임이다. 크레인에서 인형을 뽑는 순서가 주어질 때 얻을 수 있는 점수를 출력하면 된다. 풀이: stack을 사용하면 쉽게 해결할 수 있는 문제이다. 크레인이 인형을 뽑는 상황을 y좌표는 고정하며 x의 좌표가 5이상 또는 인형을 만날때까지 1씩 증가시켜주었고 만약 인형을 만났다면 이를 ..
https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 해설 : 구현 문제이다 12개의 키가 있는 번호판에서 다음번에 누르려는 키패드에서 왼쪽 열에 있는 경우 왼손으로, 오른쪽 열에 있는 경우 오른손으로 누르고 중간 열에 잇는 경우 가장 가까운 손으로 키패드를 누르며 이동시키면 된다. 핵심은 키패드간의 거리..
https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 해설: 문자열 s가 주어졌을 때 영어로 써져있는 숫자를 원래 숫자로 바꾸어서 출력하는 문제이다. 풀이 : dictionary를 이용하여 각 숫자를 의미하는 영단어와 숫자를 key-value로 매칭시켜놓고 isDigit()함수를 사용하여 숫자가 아닌 문자를 만날 때마다 치환시켜주었다. 12345678910111213141516171819202122232..
https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 해설 : 2018년도 카카오 블라인드 1차 코딩테스트 문제이다. 오픈채팅방에 들어오고 나가고 닉네임을 변경하는 유저들에 대해 채팅방에서 안내되는 시스템 메시지를 양식에 맞게 출력하면 된다. 풀이 : 쉬운 구현 문제이다. 핵심은 ID와 닉네임의 관계를 파악하는 것이다. ID는 고유한 값이다. 즉, KEY값으로 ID를 사용하고 VALUE값으로 닉네임을 지정해주면 닉..
https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 풀이 : 주어진 문자열을 조건에 맞게 압축하여 가장 짧게 압축할 수 있는 길이를 출력하면 된다. 해설 : 직관적으로 접근하면 쉽게 해결할 수 있는 문제이다. 문자열 s의 절반만큼의 길이만큼 잘라주며 반복되는 구간이 나온다면 합쳐주면 된다. 어려웠던 부분은 중복되는 부분이 없거나 (구간반복 cnt가 1일떄) 문자열의 끝까지 반복할때 예외처리 하는것이 까다로..
https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 해설: 2020년도 카카오 블라인드 1차 코딩테스트 문제이다. 주어진 문자열을 1~7단계를 거쳐 최종적으로 신규 아이디를 추천하면 된다. 풀이: 정규표현식을 사용하면 쉽게 해결할 수 있는 문제이다. 정규표현식의 개념에 대한 이해가 부족해서 Python의 string을 다루는 방법으로 일일히 구현하였다. 12345678910111213141516171819..
https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 해설: 로또의 번호 6자리 중 알아볼 수 없는 번호 n자리를 포함하여 당첨될 수 있는 최고 등수와 최저 등수를 찾는 문제이다. 풀이 : 내 로또 번호와 당첨 번호를 비교하여 일치하는 개수를 카운팅하고 이 등수가 최저 등수이다(무조건 맞춘 개수이므로) 또한 여기서 0 (번호를 알아볼 수 없는 자릿수) 의 개수를 더한 ..
https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 해설: 2021년 카카오 블라인드 채용 1차 코딩테스트 1번 문제입니다. user의 id들과 신고자의 id, 피신고자의 id가 주어졌을 때 k번 이상 신고당한 피신고자를 신고한 사람에게 전송되는 처리결과메일의 횟수를 세는 문제입니다. 풀이: 신고를 한 횟수를 카운팅하기 위한 dict 한 개와, 신고를 당한 횟수를 카운팅하기 위한 dict 한 개, 총 두 ..