코딩테스트/프로그래머스

    [3] 단어 변환

    #include #include #include #include using namespace std; #define MAX 50 vector vWord; string targ = ""; bool vis[MAX + 1]; int ans = INT_MAX; void DFS(string begin, int depth) { if (targ == begin) { ans = min(ans, depth); return; } for (int i = 0; i < vWord.size(); i++) { int cnt = 0; for (int j = 0; j < vWord[i].size(); j++) { if (begin[j] != vWord[i][j]) cnt++; if (cnt == 2) break; } if (cnt =..

    [3] 야근 지수

    #include #include #include using namespace std; long long solution(int n, vector works) { priority_queue pq(works.begin(), works.end()); for (int i = 0; i 0) { int tmp = pq.top(); pq.pop(); pq.push(tmp - 1); } } long long ans = 0; while (!pq.empty()) { ans += pow(pq.top(), 2); pq.pop(); } return ans; }

    2016년 - Level1

    2016년 1월 1일은 금요일이므로 배열은 금요일부터 시작 day는 2016년 1~12월까지에 대한 일수다. 공식으로 간단하게 풀 수 있는 문제다. #include #include using namespace std; string solution(int a, int b) { string week[7]{"FRI","SAT","SUN","MON","TUE","WED","THU"}; int day[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int val=0; for(int i=0;i week[4] = "TUE" }

    [3] 네트워크

    #include #include using namespace std; bool vis[1000]{false}; void dfs(vector computers, int start) { vis[start] = true; for (int i = 0; i < computers[start].size(); i++) { if (!vis[i] && computers[start][i]) dfs(computers, i); } } int solution(int n, vector computers) { int answer = 0; for (int i = 0; i < n; i++) { if(!vis[i]) { dfs(computers, i); answer++; } } return answer; }

    [3] 입국 심사

    #include #include #include using namespace std; long long solution(int n, vector times) { long long min = 1, max = (long long)n * (*max_element(times.begin(), times.end())); long long answer = 0; while(min

    [2] 오픈 채팅방

    vector OpenChat(vector record) { vector answer, state; map user; for (int i = 0; i > token) str[index++] = token; if (str[0] == "Enter") { state.push_back("님이 들어왔습니다."); answer.push_back(str[1]); user[str[1]] = str[2]; } else if (str[0] == "Leave") { state.push_back("님이 나갔습니다."); answer.pus..

    [2] 이진 변환 반복하기

    vector BinaryCode(string s) { vector answer(2, 0); int zeroCount = 0, round = 0; while (s != "1") { string tmpStr = ""; int size = 0, num; round++; for (int i = 0; i 0) { s += to_string(num % 2); num /= 2; } } answer[0] = round; answer[1] = zeroCount; return answer; }

    [1] 신고 결과 받기

    vector solution(vector id_list, vector report, int k) { vector answer(id_list.size()); unordered_map report_map; unordered_map idx_map; stringstream ss; for (int i = 0; i > first >> second; report_map[second].insert(first); ss.clear(); } for (auto it : report_map) { if (it.second.size..

    [2] 기능 개발

    vector solution(vector progresses, vector speeds) { vector answer; map tmp_map; int size = progresses.size(); int* arr_days = new int[size] {0}; for (int i = 0; i < size; i++) { int count = 0; for (int j = progresses[i]; j = 100) { arr_days[i] = count; break; } } } for (int i = 1; i < size; i++) { if (arr_days[i] < arr_days[i - 1]) arr_days[i] = arr_days[i - 1]; } for (int i = 0; i < size; i++) ..

    [3] 여행경로

    vector answer; bool visited[100000001]; bool flag = false; int cnt = 0; void dfs(string cur, vector tickets) { if (cnt == tickets.size()) flag = true; answer.push_back(cur); for (int i = 0; i < tickets.size(); i++) { if (!visited[i] && tickets[i][0] == cur) { visited[i] = true; cnt++; dfs(tickets[i][1], tickets); if (!flag) { answer.pop_back(); visited[i] = false; } } } } vector solution(vector ..