새발블로그
[프로그래머스/C++] 수 조작하기2 본문
문제
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;
}
'Problem Solving > Programmers' 카테고리의 다른 글
| [프로그래머스/C++] 폰켓몬 (0) | 2024.03.25 |
|---|---|
| [프로그래머스/C++] 수열과 구간 쿼리 (0) | 2024.03.07 |
| [프로그래머스/C++] 수 조작하기 1 (0) | 2024.03.06 |
| [프로그래머스/C++] 주사위 게임 2 (0) | 2024.03.05 |
| [프로그래머스/C++] 두 수의 연산값 비교하기 (0) | 2024.03.04 |