SMALL
오늘은 이전 포스팅 2024.11.15 - [알고리즘/프로그래머스] - 프로그래머스 - [PCCE 기출문제] 7번 / 버스 C++
에 이어 8번 문제를 풀어보았다. 사실 해당 문제는 너무 쉽고, 만약 그냥 코드를 처음부터 구현을 해야 한다고 해도 너무 단순한 문제라고 판단이 되며, 함정도 없고 이해도 하기 쉬운 문제다.
알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )
- 난이도 : Level 0 ( ※ Min : 0, Max : 10 )
- 풀이 시간 : 2분
- 제출 횟수 : 1번
- 풀이 결과 : Pass
문제 설명
전달받은 닉네임을 온라인 서비스 특성상 제한되는 문자가 존재하는 것을 변경해 주는 프로그램을 만드는 문제다. 간단한 규칙 6가지만 코드에 기재하면 되는 문제다. 아래 규칙 중 주의해야 할 사항은 수정된 닉네임의 길이를 비교해야 한다는 것이다.
- l을 대문자 I로 변경
- 소문자 w를 두 개의 소문자 vv로 변경
- 대문자 W를 두 개의 대문자 VV로 변경
- 대문자 O를 0으로 변경
- 수정된 닉네임의 길이가 4 미만일 경우에는 소문자 o를 길이가 4가 될 때까지 이어 붙이기
- 수정된 닉네임의 길이가 8보다 클 경우 8번째 문자까지만 사용
제한 사항은 크게 주의해야 할 사항은 없다.
문제풀이
아래에서 한 구문 구문 해석하여 정리해 보면서 정답을 수정해야 할 구문을 찾아보겠다.
- for(int i=0; i <nickname.size(); i++){ : 닉네임 문자 길이만큼 반복
- if(nickname [i] == 'l'){ answer += "I"; } : l을 대문자 I로 변경
- if(nickname [i] == 'w'){ answer += "vv"; } : l을 대문자 I로 변경
- if(nickname [i] == 'W'){ answer += "VV"; } : l을 대문자 I로 변경
- if(nickname [i] == 'O'){ answer += "0"; } : l을 대문자 I로 변경
- if(answer.size() < 3){answer += "o"; } : 수정된 닉네임의 길이가 4 미만일 경우에는 소문자 o를 길이가 4가 될 때까지 이어 붙이기 -> 해당 규칙과는 상충되는 구현이 되어있으므로 해당 문구를 수정하면 되는 것을 알 수 있다.
- if(answer.size() > 8){ answer = answer.substr(0,8); }:수정된 닉네임의 길이가 8보다 클 경우 8번째 문자까지만 사용
#include <string>
#include <vector>
using namespace std;
string solution(string nickname) {
string answer = "";
for(int i=0; i<nickname.size(); i++){
if(nickname[i] == 'l'){
answer += "I";
}
else if(nickname[i] == 'w'){
answer += "vv";
}
else if(nickname[i] == 'W'){
answer += "VV";
}
else if(nickname[i] == 'O'){
answer += "0";
}
else{
answer += nickname[i];
}
}
if(answer.size() < 3){
answer += "o";
}
if(answer.size() > 8){
answer = answer.substr(0,8);
}
return answer;
}
수정 전 문구
- if(answer.size() < 3){answer += "o"; }
수정 후 문구
- while(answer.size() < 4){ answer += "o"; }
#include <string>
#include <vector>
using namespace std;
string solution(string nickname) {
string answer = "";
for(int i=0; i<nickname.size(); i++){
if(nickname[i] == 'l'){
answer += "I";
}
else if(nickname[i] == 'w'){
answer += "vv";
}
else if(nickname[i] == 'W'){
answer += "VV";
}
else if(nickname[i] == 'O'){
answer += "0";
}
else{
answer += nickname[i];
}
}
while(answer.size() < 4){
answer += "o";
}
if(answer.size() > 8){
answer = answer.substr(0,8);
}
return answer;
}
결과
문제 링크 : 코딩테스트 연습 - [PCCE 기출문제] 8번 / 닉네임 규칙 | 프로그래머스 스쿨
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - [PCCE 기출문제] 10번 / 공원 C++ (0) | 2025.02.07 |
---|---|
프로그래머스 - [PCCE 기출문제] 9번 / 지폐 접기 C++ (0) | 2024.11.17 |
프로그래머스 - [PCCE 기출문제] 7번 / 버스 C++ (0) | 2024.11.15 |
프로그래머스 - [PCCE 기출문제] 6번 / 물 부족 C++ (1) | 2024.11.14 |
프로그래머스 - [PCCE 기출문제] 5번 / 심폐소생 C++ (2) | 2024.11.14 |