[ 알고리즘 ]

    [백준] 14502.연구소

    [백준] 14502.연구소

    📌문제 https://www.acmicpc.net/problem/14502 🎖️난이도 ✔️풀이 from itertools import combinations from collections import deque import copy def getDim(graph, two_xy_list, pos_list, n, m): # 벽 3곳 세우기 G = copy.deepcopy(graph) # 받아온 graph 그대로 쓰면 얕은 복사 돼서 X! (원본에 영향끼침) for i in range(3): x, y = pos_list[i] G[x][y] = 1 # 감염 시작 (bfs) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] for two_pos in two_xy_list: queue = dequ..

    [프로그래머스/C++] 올바른 괄호

    [프로그래머스/C++] 올바른 괄호

    📌문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 🎖️난이도 Level 2 ✔️풀이 #include #include //#include => 스택은 벡터로 구현하는게 더 접근 쉬움! #include using namespace std; bool solution(string s) { if (s[0] == ')') return false; vector stack; // string 아니고 char (문자 기호) for (int i = 0; i < s.length(); i++) { if (s[i] == '(') { stack.push_back(s[i]); continue; } if (!stack.empty()) { // "())" 의 경우..

    [프로그래머스/C++] 숫자 문자열과 영단어

    [프로그래머스/C++] 숫자 문자열과 영단어

    📌문제 https://school.programmers.co.kr/learn/courses/30/lessons/81301 🎖️난이도 Level 1 ✔️풀이 // sol1) map(dict), isdigit, substr 이용 #include #include #include #include #include using namespace std; int solution1(string s) { map m; m["zero"] = "0"; m["one"] = "1"; m["two"] = "2"; m["three"] = "3"; m["four"] = "4"; m["five"] = "5"; m["six"] = "6"; m["seven"] = "7"; m["eight"] = "8"; m["nine"] = "9"; int..

    [프로그래머스/C++] 소수 찾기

    [프로그래머스/C++] 소수 찾기

    📌문제 https://school.programmers.co.kr/learn/courses/30/lessons/12921 🎖️난이도 Level 1 ✔️풀이 // 정답 #include #include #include #include using namespace std; int solution(int n) { int cnt = 0; //bool arr[1000001] = {true}; // 이렇게 하면 첫번째 값만 true로 초기화됨! (나머지는 false) //arr[0] = arr[1] = false; // 0과 1은 소수 x // 배열 초기화 (sol1) /* bool arr[1000001]; for(int i = 2; i 조금 더 느림 // 에라토스테네스의 체 => 배수들(소수가 아닌 애들)을 0으로..

    [프로그래머스/C++] 폰켓몬

    [프로그래머스/C++] 폰켓몬

    📌문제 https://school.programmers.co.kr/learn/courses/30/lessons/1845 🎖️난이도 Level 1 ✔️풀이 // 정답 #include #include #include using namespace std; int solution(vector nums) { int N = nums.size(); set s(nums.begin(), nums.end()); return N / 2 > s.size() ? s.size() : N / 2; } // 오답 (시간초과) => 순열과 조합 다 구할 필요 X #include #include #include #include // next_permutation(순열), 조합 using namespace std; int solution..