-
숫자 문자열과 영단어코딩테스트 2023. 3. 11. 19:01
https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
본격적으로 카카오 인턴십 문제를 조금 풀어보겠습니다.
귀여운 프로도와 네오가 게임을 하네요. 알파벳과 숫자가 섞인 입력값이 들어오면, 출력값으로 알맞은 숫자 문자열이 나오게끔 하는 문제입니다. 처음에 제가 작성한 코드를 볼게요.
우선 문자열 중 일부를 대체할 때 replace라는 메소드를 쓰기로 했습니다. 이 문제를 풀면서 챙겨야할 가장 중요한 개념은요,
"python에서 문자열은 immutable(불변)한 자료형이라, 수정하려면 새로운 문자열 만들어서 값을 넣어줘야 한다."
입니다. 우선 제가 초기에 짠 문제투성이 코드를 먼저 볼게요.
문자열에 알맞은 숫자를 쉽게 대응시키기 위해 dictionary 자료형을 사용했습니다. 야무지게 초기화해주고요, 빈 문자열 temp를 만들어서 파라미터로 들어온 문자열의 글자들을 읽어들이는거에요. 그리고 temp가 dict에 key로써 존재하게 되면, replace 메소드를 통해 key를 key의 value로 대체해주는, 꽤 괜찮은 방식이라고 생각했습니다.
하지만 문법적인 문제가 발생하게 되는데요.
1. dictionary에 key는 문자열로, value는 int 자료형으로 저장되어있어 이후의 코드에서 혼선이 생깁니다.
2. letter이 숫자인지 알파벳인지 분기하는 문장이 필요합니다.
3. 파라미터로 들어온 s라는 문자열은 immutable하므로 이 문자열 안에서 뭔가를 바꾸려고 하면 안 됩니다.
위 문제점들을 해결하여 새로운 코드를 작성했습니다. dict에 value들을 다 문자열 자료형으로 바꿔주었구요, result라는 새로운 문자열 변수를 이용했습니다. isdigit과 isalpha 메소드를 사용하여 조건문을 추가해주었고, result 문자열에 차곡차곡 결과를 쌓아준 모습입니다.
통과! 좋습니다.
'코딩테스트' 카테고리의 다른 글
BOJ 1463 1로 만들기 python (0) 2024.04.15 BOJ 1064 - 평행사변형 (0) 2023.03.19 BOJ 1874 - 스택 수열 (0) 2023.03.19 옹알이(1) (0) 2023.03.11 코딩테스트 공부 시작! (0) 2023.03.08