백준

백준 9086 c++/python 풀이

ris 2024. 3. 30. 11:05

최근 python을 다시 해야하는 일이 생겨서 손풀이 겸 같이 해봅니다.

 

 

기초 수준의 문제네요.

간단한 인덱싱 문제였습니다.

 

python 코드입니다.

 

t = int(input())
result = []
for i in range(t):
    s = input()
    result.append(s[0]+s[-1])
for i in range(len(result)):
    print(result[i])

 

특별히 설명할 것은 없지만 그래도 가끔 제가 까먹는 것을 설명드리자면

result.append(s[0]+s[-1]) 부분에서 -1은 마지막 부분을 뜻합니다.

0이 시작이니 당연하기도 하지만

 

다음은 c++코드입니다.

 

#include<iostream>

using namespace std;

int main(){
    int t;
    string s;
    
    cin >> t;
    
    for(int i = 0; i < t; i++){
        cin >> s;
        cout << s[0] << s[s.length() - 1] << '\n';
    }
    return 0;
}

 

간단한 코드이지만 저는 잠깐 해맸었네요.

python과 비슷하게 t로 반복할 수를 구하고 끝과 마지막을 한번에 출력합니다.

이 문제는 입력과 동시에 출력해도 문제는 없더군요.

이 점을 이용해서 풀었습니다.

length 함수를 이용해 string 객체의 길이를 구하고 -1을 해 마지막을 구했습니다.

 

개념 정리만 하고 끝내겠습니다.

 

length(), size()

 

length() 함수는 string 객체에 자주 사용되는 함수입니다.

문자열의 실제 길이를 알려주며 null 문자를 제외한 길이를 알려줍니다.

더보기

null 문자

문자열의 끝을 의미하는 구역에 삽입되는 문자.

항상 문자열의 끝은 NULL로 끝납니다.

설령 아무것도 넣지 않았다고 해도 들어갑니다.

 

 

c와 c++에서는 NULL = int 0 = '\0' 입니다.

*주의

int 0과 char var = '0'은 다릅니다.

 

예를 들자면

char * pt = NULL과 char * pt = 0 은 같은 의미입니다.

 

허나 같다고하여 남발하면 안됩니다.

상황에 맞게 써야합니다.

0은 변수/배열을 초기화할 때

'\0'은 잘 안쓰긴 하지만 c에서는 자주 쓰는 문자열의 끝을 지정할 때

NULL은 포인터를 초기화할 때 자주 쓰입니다.

 

완벽한 설명은 아니라 틀린 부분이 있을 수 있으니 댓글에 틀린 부분을 지적해주시면 감사하겠습니다.

시간 복잡도는 O(n)으로 길수록 시간이 오래 걸립니다.

string 클래스에 종속적입니다.

 

size() 함수는 컨테이너의 크기를 반환하는 함수입니다.

표준 라이브러리에서 제공되며 다양한 컨테이너 타입에서 사용할 수 있습니다.

ex) vector, list, array, string

 

시간 복잡도가 O(1)이기에 효율적입니다.

컨테이너는 문자열과 다르게 NULL문자가 없기에 배열 요소 개수를 출력합니다.