C++

Ho Jin Lee·2023년 5월 5일
0
post-custom-banner

BASIC

//string to integer 
stoi(str);
//integer to string
#include <string>
to_string(int);
//for 문 기본
for(int a=0; a<arr.size(); a++){
	a+=1
    }
//for 문 전부 맛있게 arr 안의 a 하나씩
int arr[]={1,2,3,4,5};
for(int a : arr) {
        a+=1;
    }
//1 2 3 4 5
    for(int &a : arr) {
        a+=1;
    }
//2 3 4 5 6 &을 붙여서 바로 수정 가능!

int solution(int a, int b, bool flag) {
    return flag? a+b:a-b;
}
// string 탐색
// word안에 c가 있으면
if (word.find(c)!=string::npos)

VECTOR

STRING

#include <string>
string numbers = "0123456789";
string full = numbers.substr();
string sub = numbers.substr(3, 5);//34567

sstream

#include <sstream>
int num;
string word="1234 345:무야호";
stringstream stream;
stream.str(word);
while (stream>>num){
        cout<<num<<endl;
    }
//num의 type 에 맞는걸 " " 기준으로 나눠서 준다.
//1234
//345
stream.str("");
    

ALGORITHM

//v의 i번쨰 원소 삭제!
v.erase(v.begin() + i);
v.erase(remove(v.begin(), v.end(), 3), v.end())

QUEUE

https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=cpp
#include <string>
#include <vector>
#include <queue>
string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
    string answer = "";
    queue<string> q1;
    queue<string> q2;
    for (string card:cards1){
        q1.push(card);
    }
    for (string card:cards2){
        q2.push(card);
    }
    for (auto target : goal){
        if(q1.size()>0 and target==q1.front()){
            q1.pop();
        }
        else if(q2.size()>0 and target==q2.front()){
            q2.pop();
        }
        else{
            return "No";
        }
    }
    return "Yes";
}

map, unordered_map

#include <map>
#include <unordered_map>
//둘다 기능은 비슷 map은 key를 오름차순 정렬
// map은 이진탐색트리 형태, unordered_map은 hash_table기반.
//https://excited-hyun.tistory.com/17
map<char, int> m1;
m1[key]=value;
// map.find(키) 로 찾을수 잇다. 없으면 0 을 return 한다 
//dictionary.find(key[i])!=dictionary.end() 같은 걸로 값이 있다 면 으로 사용가능
// map 출력

    for (auto di:dict){
        cout<<di.first<<" "<<di.second<<endl;
    }

sstream

//split 함수 구현 
vector<string> split(string input, char delimiter) {
    vector<string> answer;
    stringstream ss(input);
    string temp;
 
    while (getline(ss, temp, delimiter)) {
        answer.push_back(temp);
    }
 
    return answer;
}

sort

#include <algorithm>
sort(v.begin(), v.end());
sort(v.begin(), v.end(), compare);                //사용자 정의 함수 사용
sort(v.begin(), v.end(), greater<자료형>());    //내림차순 (Descending order)
sort(v.begin(), v.end(), less<자료형>());        //오름차순 (default = Ascending order)

존 나 어 렵 다

//https://school.programmers.co.kr/learn/courses/30/lessons/172928?language=cpp
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <sstream>
using namespace std;
vector<string> split(string input, char delimiter) {
    vector<string> answer;
    stringstream ss(input);
    string temp;
 
    while (getline(ss, temp, delimiter)) {
        answer.push_back(temp);
    }
 
    return answer;
}

vector<int> solution(vector<string> park, vector<string> routes) {
    
    vector<int> answer;
    pair<int,int> current;
    for (int i=0;i<park.size();i++){
        for (int j=0;j<park[0].size();j++){
            if (park[i][j]=='S'){
                current=make_pair(i, j);
            }
        }
    }
    
    map<string,pair<int,int>> directions;
    directions["E"]=make_pair(0,1);
    directions["W"]=make_pair(0,-1);
    directions["S"]=make_pair(1,0);
    directions["N"]=make_pair(-1,0);
    for (auto route:routes){
        
        vector<string> info=split(route, ' ');
        string dir=info[0];
        int dist=stoi(info[1]);
        int x=current.first;
        int y=current.second;
        bool flag=true;
        for (int i=0;i<dist;i++){
            x+=directions[dir].first;
            y+=directions[dir].second;
            if (x<0 || y<0 || park.size()<=x || park[0].size()<=y || park[x][y]=='X'){
                flag=false;
                break;
            }
        }
        if (flag){
            current.first=x;
            current.second=y;
            }

            
            
            
        
    }
    answer.push_back(current.first);
    answer.push_back(current.second);
    return answer;
}
        

profile
배 터져 죽을 때까지
post-custom-banner

0개의 댓글