본문 바로가기

알고리즘/[프로그래머스]Lv.0

[프로그래머스]Lv 0. 인덱스 바꾸기

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있을 수 있습니다. )

 

https://school.programmers.co.kr/learn/courses/30/lessons/120886

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1.문제설명

문제 설명
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항
1 < my_string의 길이 < 100
0 ≤ num1, num2 < my_string의 길이
my_string은 소문자로 이루어져 있습니다.
num1 ≠ num2

 

2. 문제해결 접근

  • 인덱스를 입력해서 문자열의 위치를 변경하는 함수가 있지 않을까?
  • 중간에 요소를 입력하는 insert()를 이용하여 각 값의 위치를 바꾸되, num2의 가 들어갈때는 index를 위치를 보정한다?

 

  • 두 값 바꾸기를 이용하면 매우 손쉽게 값을 바꿀 수 있다.

 

3.C++ 답안

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string solution(string my_string, int num1, int num2) {
    string answer = "";
   	// 이동할 값을 담을 temp 변수를 선언해 my_string[num1]로 초기화한다.
    char temp = my_string[num1];
    
    // my_string[num1] 에 my_string[num2]를 담는다
    my_string[num1] = my_string[num2];
    // my_string[num2] 에 temp를 담는다
    my_string[num2] = temp;
    
    answer = my_string;
    return answer;
}

 

4. C++ 문법 설명과 표현법

0. 반성
  1. 문제 해결방법을 내장 함수를 이용한 방법으로 한정했다.
  2. string의 i 인덱스의 요소의 값을 지정하고자 할때, for문으로 접근해야겠다고 단정짓고 사고를 제한했다. 

 


 

 

매우 간결하고 어렵지 않은 코드의 기록을 남기는 이유는, C++의 많은 문법 허용과, 생각보다 쉬운 접근으로 풀이가 가능했기 때문이다.

 

개발언어를 처음 배울 때 배웠던 두 변수의 값 바꾸기를 이용하면 손 쉽게 바꿀 수 있다.

일단 요구사항에서, 두 값(요소)의 위치를 바꾸는 문제가 나온다면 먼저 이 풀이방법을 우선순위에 두고 고민해보자 

 

 


C++ 문법에서, 변수[index] 로 지정할 수 있다