오답노트

프로그래머스 1단계 - 문자열 내 마음대로 정렬하기 - 오답노트 본문

C,C++/코딩테스트

프로그래머스 1단계 - 문자열 내 마음대로 정렬하기 - 오답노트

권멋져 2022. 5. 27. 17:38
https://programmers.co.kr/learn/courses/30/lessons/12915
 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱

programmers.co.kr

- 문제 파악

문자열 배열이 주어지고 정수의 인덱수 n 이 주어진다. 문자열에서 n번째 글자로 정렬하되 같은 글자일 경우 문자열 사전순으로 정렬하라

 

- 나의 접근

sort 함수를 i번째 요소와 i+1 번째 요소를 비교하여 정렬하는 로직으로 멋대로 생각하고 있었다. (실제로 어떻게 도는지는 공부해보자) 그래서 겹치는 부분만 다시 사전순으로 정렬하려고 해서 쓸데없이 코드만 길어지고 답도 맞추지 못했다.

 

- 정답

sort 에 함수를 넣어서 사용하는 방식이 익숙하지 않아서 최대한 안사용하고 버틸려고 했는데, 이젠 피하지 말고 마주해야겠다.

 

#include "bits/stdc++.h"

using namespace std;

int N;

bool cmp(string a, string b){
    if(a[N] == b[N]){
        return a < b;
    }
    else{
        return a[N] < b[N];
    }
}

vector<string> solution(vector<string> strings, int n) {
    vector<string> answer;
    N = n;    
    sort(strings.begin(),strings.end(),cmp);    
    return strings;
}