https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 해설 : 1부터 row * column의 값으로 채워진 2차 행렬과 회전시킬 테두리의 x1,y1,x2,y2 좌표가 주어질 때, 이 행렬의 테두리를 회전시키며 변경된 값 중에 가장 작은 값을 찾는 문제이다 풀이 : 행렬을 회전시킬 때 테두리 4개에 대해 회전하는 로직을 구현하였다. 이 때, 겹치는 부분인 각 꼭짓점은 따로 저장을 하여 겹치는 문제..
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 해설 : 참가선수와 완주선수들의 이름이 담긴 두 배열이 주어질 때 참가했지만 완주하지 못한 선수의 이름을 출력하면 된다. 해설 : 두 배열을 모두 정렬한다면 앞에서부터 zip으로 비교했을 때 같지 않은 값이 나오는 것이 완주하지 못한 선수 이름이므로 이때 배열의 원소를 출력하고 종료한다. 12def solution(participant, co..
https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 해설 : 두 개의 배열이 주어진다. 하나는 숫자들만 들어있고 하나는 true 또는 false의 값이 들어있다. 첫 배열의 각 숫자들에 두번째 배열의 부호들을 붙여 수식을 계산하면 된다. 풀이 : Python의 zip과 eval이라는 기능을 사용하였다. zip은 list가 여러 개일 때 각 list의 요소들을 묶어서 한 번에 계산할 수 있는..
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 (번호를 알아볼 수 없는 자릿수) 의 개수를 더한 ..