카테고리 없음

[코드트리] 함수 알고리즘 약점 극복 학습 후기

jai051031 2026. 5. 18. 21:46

 

https://www.codetree.ai/ko/trails/complete/curated-cards/challenge-more-than-one-alphabet/description

 

2개 이상의 알파벳 설명 | 코드트리

2개 이상의 알파벳을 통해 문제 요구사항과 입력·출력 예시를 꼼꼼히 확인해 정확한 풀이 전략을 세워보세요.

www.codetree.ai

 

 

시뮬레이션에 대한 학습을 시작하기 전 기초부터 차근차근 나아가기 위하여 함수부터 학습을 시작하였다. 

 

 

함수 문제를 모두 다 풀어 보았고 그 중 제일 기억에 남은 문제 하나를 가져왔다.

 

 

문자열 A에 서로 다른 알파벳 수가 2개 이상이라면 Yes, 아니라면 No를 출력해야 하는 문제이다.

 

#include <iostream>
using namespace std;
string f(int len, string s){
    for(int i=1; i<len; i++){
        if(s[i] != s[i-1])
            return "Yes";
    }
    return "No";
}
int main() {
    string s;
    cin >> s;
    int len = s.length();
    cout << f(len, s);
    return 0;
}
main 함수

문자열 s를 선언 후 입력받고, 
s를 토대로 정수형 변수 len 을 선언하여 문자열 s 의 길이을 저장 해준 후
함수 f의 반환값을 출력해준다.

 

 

f 함수

문자열 s와 s의 길이 len을 인수로 받는다.
Yes와 No 즉 문자열로 반환 해야 하기에 string 함수로 선언하였다.

for문을 통해 i를 1부터 len까지 반복하며 

if(s[i] != s[i-1])
	return "Yes";
    
즉 문자열 s의 인덱스 i의 값과 인덱스 i-1의 값이 다르면 Yes를 반환한다.
문제에서 서로 다른 알파벳 수가 2개 이상일 경우 Yes를 출력 하라 하였는데
이는 즉 문자열의 모든 문자가 같은 문자가 아니면 참이 되어야 하는 문제이다.
그렇기에 i 1부터 1씩 증가하며 바로 뒤의 값과 비교하며 다르다면 Yes를 반환하고,
문자열 s를 모두 탐색 하였지만 반환이 되지 않은 경우는 모두 같은 문자로 판단하고 No를 반환한다.
다음은 코드트리의 해설이다.

 

대부분의 코드는 동일한 양상을 가졌지만 필자와의 가장 큰 차이점이라 하면 비교 인덱스의 위치이다. 필자는 i값을 1씩 증가하며 i-1 인덱스와 비교하였지만 해설에서는 i값을 1씩 증가하며 i와 인덱스 0의 값을 비교하였다.

결과 값은 같은 코드이지만 해설처럼 풀이를 한다면 코드의 가독성이 훨 좋을 것 같다 느꼈다. 필자의 코드를 처음 보면 왜 i와 i-1을 비교하지? 라는 의문이 들 수 있지만 해설의 풀이는 이해하기 쉬운 정석적인 코드라 생각한다.

함수 문제는 예상했던 대로 어렵지 않았다. 하지만 여러 유형의 문제를 단계별로 풀어보며 나만의 방법이 생기기 시작했고 원래 알고 있던 내용을 더욱 견고하게 다져나가는 계기가 되었다. 이제 더 어려운 개념을 학습 하더라도 탄탄한 기본기로 더욱 쉽게 학습할 수 있을 것 같다는 자신감이 생기게 되었다.
 
#코드트리#코딩테스트#코테공부
#함수#알고리즘 기초