본문 바로가기
728x90

lv310

[programmers] Lv.3 N으로 표현(c++) 이 문제는 DP 문제이다. (DP 링크 추가 예정...) my full code #include #include #include using namespace std; int nnn(int N, int num){ int result = N; for(int i=1; i 2022. 7. 1.
[programmers] Lv.3 네트워크(c++) DFS에 대한 두려움이 많이 줄어든것같다. my full code #include #include using namespace std; void dfs(vector& computers, int i){ computers[i][i] = 0; for(int k=0; k 2022. 5. 25.
[programmers] Lv.3 징검다리 건너기(c++) 이분탐색(링크 추가 예정) 더보기 #include #include #include using namespace std; bool continuous_0(vector& stones, int mid, int k){ int zeros=0; for(auto stone: stones){ if(stone - mid > 0) { zeros = 0; } else zeros++; if(zeros >= k) return true; } return false; } int solution(vector stones, int k) { int answer = 0; int min = 1, max = *max_element(stones.begin(), stones.end()); while(min < max){ int mid = (ma.. 2022. 5. 5.
[programmers] Lv.4 동굴 탐험(c++) 4단계는 어려운거같다... 코드를 봐도 cycle을 의미한다하여 응? 왜 그게 cycle을 의미하는건데? 근본적인 질문이 떠오르고 내 방식대로 하려하면 왠지 너무 복잡해진다. 근데 대부분의 답은 내 방식대로 한게 맞는거같다.. 검색하다가 위상정렬(topology sort)라는 것을 알게됐다. (이 해설에 들어갔다가 알게됨 : https://2jinishappy.tistory.com/200, 풀이는 참고하지 않았고, 검색해서 찾아낸 위상 정렬을 설명해주고있는 아래 참고 링크에서 sort 원리만 참고했다.) 다른 방법들도 있는것 같았지만, 이게 제일 명확했다. 더보기 #include #include #include using namespace std; bool topology_sort(vector& di, .. 2022. 5. 5.
[programmers] Lv.3 불량 사용자(c++) 더보기 #include #include #include #include using namespace std; set answer; void find_all(vector& ban_possible, set banned = {}, int i=0){ for(auto possible: ban_possible[i]){ if(banned.find(possible) != banned.end()) continue; else banned.insert(possible); if(i+1 != ban_possible.size()) find_all(ban_possible, banned, i+1); if(i+1 == ban_possible.size() && banned.size() == ban_possible.size()) { an.. 2022. 5. 4.
[programmers] Lv.3 경주로 건설(c++) 더보기 #include #include #include #include using namespace std; struct Node{ int x, y; int cost; int dir; Node(int x=0, int y=0, int cost=0, int dir=4) : x{x}, y{y}, cost{cost}, dir{dir}{} }; int solution(vector board) { vector x_dir = {-1, 1, 0, 0}; vector y_dir = {0, 0, -1, 1}; vector possible_dir = {{0, 2, 3}, {1, 2, 3}, {0, 1, 2}, {0, 1, 3}, {1, 3}}; int N = board.size(); vector dp(N, vector(N,.. 2022. 5. 3.
[programmers] Lv.3 보석 쇼핑(c++) 더보기 #include #include #include #include using namespace std; vector solution(vector gems) { map check; vector pos; for(int i=0; i< gems.size(); i++){ check[gems[i]] = 0; if(i+1 != gems.size() && gems[i] != gems[i+1]) pos.push_back(i); } vector answer = {1, (int)gems.size()}; if(check.size() == gems.size()) return answer; else if (check.size() == 1) return {1, 1}; for(int i=0; i *range.rbegin()-*.. 2022. 5. 1.
[programmers] Lv.2 거리두기 확인하기(c++) 이렇게 if를 많이 쓰고, 중첩이 많이되면 찝찝하다.... 더보기 #include #include #include using namespace std; vector solution(vector places) { vector answer; for(vector place: places){ int ans = 1; for(int i=0; i= 0 && place[i][j-2] == 'P')||(j-1 >= 0 && place[i][j-1] == 'P')) ans = 0; // left-up [i-1][j-1] if(!left_partition | !up_partition) if(i-1 >= 0 && j-1 >= 0 && place[i-1][j-1] == 'P') ans = 0; // left-down [i+1].. 2022. 4. 28.
[programmers] Lv.3 표 편집(c++) 교훈: 생각나는 아이디어가 있으면 그냥 하자.. boubly linked list를 만들면 되겠다 생각했는데.. 만들어져있는걸로 그냥 하자 싶어서 set으로 진행했으나 답은 맞는데 아무리 해도 효율성이 안돼서 그냥 doubly linked list를 만들기로 결정.. 별로 어려운것도 아닌데 더 쉽고 좋은 방법 찾겠다고 시간만 낭비했다.. 라는 일기 doubly linked list(양방향으로 연결된 리스트) https://jolly-note.tistory.com/32 linked list - 이중(doubly) 연결 리스트 양방향으로 연결돼있는 linked list이다. 현 노드에서 이전 노드와 앞의 노드로 갈 수 있다. + singly linked list는 각 노드가 다음 노드만 가리킨다. + cir.. 2022. 4. 27.
[programmers] Lv.3 추석 트래픽(c++) 다시 한번 풀기 더보기 #include using namespace std; pair time_difference(string s, int t){ long t_sec = 0; istringstream iss(s); string buff; int i = 2; while(getline(iss, buff, ':')){ buff.erase(remove(buff.begin(), buff.end(), '.'), buff.end()); t_sec += pow(60, i)*stoi(buff); if(i==1) t_sec *= 1000; i--; } return {t_sec - t + 1, t_sec}; } vector logs; int compute(long start, long end){ int cnt = 0, id.. 2022. 4. 25.
728x90