본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있을 수 있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/120886
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. 반성
- 문제 해결방법을 내장 함수를 이용한 방법으로 한정했다.
- string의 i 인덱스의 요소의 값을 지정하고자 할때, for문으로 접근해야겠다고 단정짓고 사고를 제한했다.
매우 간결하고 어렵지 않은 코드의 기록을 남기는 이유는, C++의 많은 문법 허용과, 생각보다 쉬운 접근으로 풀이가 가능했기 때문이다.
개발언어를 처음 배울 때 배웠던 두 변수의 값 바꾸기를 이용하면 손 쉽게 바꿀 수 있다.
일단 요구사항에서, 두 값(요소)의 위치를 바꾸는 문제가 나온다면 먼저 이 풀이방법을 우선순위에 두고 고민해보자
C++ 문법에서, 변수[index] 로 지정할 수 있다
'알고리즘 > [프로그래머스]Lv.0' 카테고리의 다른 글
[프로그래머스]Lv .0 최댓값 만들기 (2) (0) | 2022.11.17 |
---|---|
[프로그래머스]Lv .0 배열 회전시키기 (0) | 2022.11.15 |
[프로그래머스]Lv 0. 문자열 정렬하기 (1) (0) | 2022.11.07 |
[프로그래머스]Lv 0. 중복된 문자 제거 (0) | 2022.11.07 |
[프로그래머스]Lv0. 숨어있는 숫자의 덧셈 (1) (0) | 2022.11.03 |