새발블로그

[프로그래머스/C++] 수 조작하기2 본문

Problem Solving/Programmers

[프로그래머스/C++] 수 조작하기2

EUG 2024. 3. 7. 15:12

문제

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

풀이방법

이전 수 조작하기1에서 다른 사람의 풀이를 보고 그 방법을 적용해보았다. (map 사용했다는 뜻!)

바로 전 인덱스의 값과 비교했을 때 그 차의 값에 따른 문자를 출력해야했으므로 map의 순서를 바꿔주었다.

다음 vector 를 순회하였다~~(배열이라 쓰려다가 vector가 뭔지 몰라서 찾아봄)

 

Vector

vector 컨테이너는 자동으로 메모리가 할당되는 배열

 

사용방법

- #include <vector>

- vector<[data type]> [변수이름]   : vector<int> v;

생성자와 연산자

- vector<int> v; 비어있는 벡터

- vector<int> v(5); 기본값(0)으로 초기화된 5개의 원소를 가지는 벡터

- vector<int> v(5,2); 2로 초기화된 5개의 원소를 가지는 벡터

- v.at(idx); idx번째 원소 참조  * v[idx]보다 느리지만, 범위를 점검하므로 안전

- v[idx]; idx 번째 원소 참조 * 범위 점검 안함

- v.front(); 첫번째 원소 참조

- v.back(); 마지막 원소 참조

- v.clear(0); 모든 원소 제거 (but 메모리는 남아있음)

- v.push_back(8); 원소 8삽입

- v.pop_back(); 마지막 원소 제거

- v.begin(); 첫번째 원소를 가리킴

- v.end(); 마지막의 다음을 가리킴

- v.rbegin(); reverse begin, 거꾸로 첫번째 원소

- v.rent(); reverse end; 거꾸로 마지막 다음

- v.reserve(n); n개의 원소를 저장할 위치를 예약(동적 할당)

- v.resize(n); 크기를 n으로 변경, 더 커지면 0으로 초기화 됨   ex: v.resize(n,3); 크기를 n으로 변경, 더 커지면 인자의 값을 3으로 초기화

- v.size(); 원소의 갯수 리턴

- v.capacity(); 할당된 공간의 크기 리턴

- v2.swap(v1); v1과 v2의 원소와 capacity를 바꿔준다.

- v.insert(2,3,4); 2번째 위치에 3개의 4의 값을 삽입 (원래 있던 원소들은 자리가 밀림)

- v.insert(2,3); 2번째 위치에 3의 값을 삽입하며, 삽입한 곳의 iterator를 반환

- v.erase(iter); iter가 가리키는 원소를 제거하고, size만 줄어듬(할당 메모리는 그대로)

- v.empty() 빈상태라면 true

 

 

 

 

풀이

#include <string>
#include <vector>
#include <map>

using namespace std;

map <int,char> m = {{1, 'w'}, {-1,'s'}, {10,'d'},{-10, 'a'}};
string solution(vector<int> numLog) 
{
    string answer = "";
    for (int i = 0; i<numLog.size()-1; i++)
    {
        answer+=m[numLog[i+1]-numLog[i]];
    }
    return answer;
}