이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다.
이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고
이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나
product.kyobobook.co.kr
이번 문제는 아래 링크에 접속해서 풀어볼 수 있습니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
정답 코드
파이썬 Ver.
자바스크립트 Ver.
문제 풀이
이 문제를 풀기 위해서는 파이썬 반복문의 range(startIndex, lastIndex, step)의 사용법을 알아야 한다. 왜냐하면 왼쪽부터 한 글자씩 문자를 차례대로 증가시키면서 증가된 문자의 길이만큼 다음 문자를 탐색하며 일치하는 문자의 개수를 구해야 하기 때문이다.
우선 문자를 처음부터 끝까지 탐색하지 않아도 되기 때문에 반복문으로 문자의 절반까지만 탐색한다. 그 다음 이중 반복문을 돌면서 앞선 문자(prev)와 다음 문자(s[j : j + step])이 일치한다면 일치 횟수(count)를 1씩 증가시키고, 일치하지 않는다면 현재 정보를 기준으로 compressed 변수에 문자열을 합친다. 이때 count가 2 이상이라면 일치 횟수도 합쳐야 하기 때문에 count + prev를 합치고, 아니라면 prev만 합친다. 이후 prev를 다음 문자로 치환하고 count도 초기화한다.
# 남아 있는 문자열 처리라고 되어 있는 부분이 없으면 값이 정상적으로 출력되지 않는다. 예를 들어 s = 'aabbac'일 경우 이중 반복문에서 마지막 문자를 돌릴 때 i = 3, for j in range(3, len(s), 3)이 된다. 이때 compressed = '2a2b'이며, prev = 'a'(s[-2])이다. 이중 반복문의 조건문에서 prev와 s의 마지막 인덱스에 위치한 'c'가 다르므로 compressed에 prev에 담긴 'a'가 추가되고 prev의 값이 'c'로 바뀌면서 반복문이 끝난다. 즉 compressed = '2a2ba'가 된다. 하지만 '2a2bac'를 출력해야 하므로 마지막에 c를 추가해야 하는데 이 때문에 반복문 밖에 별도의 문자열 처리 조건문이 있는 것이다.
함께 보기
아래 링크에서 문자열을 압축하는 다양한 방법을 볼 수 있다.
파이썬의 문자열 압축
파이썬의 문자열 압축 범주 잡집 | June 10, 2022 04:16 메모리 내 데이터베이스 관리 시스템(IMDBMS)을 사용하여 무엇보다도 URL 및 메시지를 압축할 수 있습니다. 문자열 압축에 대해 좀 더 자세히 살펴
ciksiti.com
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Baekjoon] 3190 뱀(파이썬/자바스크립트/NodeJS) (0) | 2022.12.15 |
---|---|
[프로그래머스] level 3 자물쇠와 열쇠(파이썬 python) (0) | 2022.12.14 |
[이코테] 구현_럭키 스트레이트(파이썬/자바스크립트) (0) | 2022.12.12 |
[이코테] 구현_게임 개발(파이썬/자바스크립트) (0) | 2022.12.12 |
[이코테] 구현_왕실의 나이트(파이썬/자바스크립트) (0) | 2022.12.11 |
댓글