본문 바로가기

전체 글

(119)
프로그래머스 : 가장 먼 노드 C++ BFS programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 후기 1. 심플한 BFS다 BFS는 문제만 다르지 푸는 방식이 다 똑같아서 쉬운거 같다 #include #include #include #include using namespace std; vector map[20001]; int solution(int n, vector edge) { int answer = 0; int length[20001];// length[2] 는 1번노드에서 2번노드까지 거리 int visited[20001]; memse..
프로그래머스 : 순위 C++ (플로이드 와샬 활용) programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 풀이 1. 플로이드 와샬 다시 한번 복습했다, 굉장히 유용할거같다 ex) a->b 가 있고 b-> c 가 있다면 a->c 도 있다는거!! 2. 같은 의미로 a가 b를 이기고, b가 c를 이겼으면 a가 c를 이긴거나 마찬가지 3. 모두 정리 후에 다른 사람들 모두와의 상대전적이 남아있다면 그것의 순위를 알수있다는거! #include #include using namespace std; int solution(int n, vector results) { int answer = 0; in..
프로그래머스 : 네트워크 C++ (유니온 파인드 연습) programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 및 후기 1. computers 배열 다 돌고 후에 꼭 한번 더 parent 초기화를 해줘야된다!!!! 2. 이거때문에 TC 9번에서 계속틀림 사실 이유는 잘 모르겠다 #include #include #include #include using namespace std; int parent[201]; int getParent(int x) { if(parent[x]==..
프로그래머스 : 단속카메라 C++ programmers.co.kr/learn/courses/30/lessons/42884# 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 풀이 1. 일단 시작지점을 오른차순으로 정렬한다! -> 최소점이랑 비교해가면서 차근차근 겹치는 여부 판단하면 된다 2. while 문을 만들고 탈출 조건은 모든 자동차를 감시한 상태! -> visited[i] ==1 이라는건 3. 아직 감시 안된 자동차의 경우 -> 출발점이 기존 최소값 이상, 최대값 이하일때 -> 도착점이 기존 최대값 이하, 최솟값 이상일떄 업데이트 하곻 visited 처리 4. 루프 한번 돌때마다 answer++ #include #include #include..
프로그래머스 : 섬 연결하기 C++ programmers.co.kr/learn/courses/30/lessons/42861# 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 후기 1. 유니온 파인드, 크루스칼 처음 써봤는데 진짜 개꿀인거같다. 더 연습해야징 풀이 1. 유니온 파인드 함수들 미리 만들어 둔다 1) getParent : 재귀함수로 루트 찾기, 루트는 젤 작은 숫자로 할거임 2) connect : 부모를 통일시키면 사실상 연결된거 : 아까 위에서 말했듯이 작은 숫자가 루트니까 둘중 더 작은 부모로 통일 시킴 2. 미리 가격 싼순으로 sort 해둔다! #include #include #include using namespace std..
프로그래머스 : 디스크 컨트롤러 c++ programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 1. 기본 프로세스 -> 현재 작동중인게 끝나기 전에 들어오는 작업이 있으면 몽땅 queue에다가 다 넣는다 -> queue는 priority_queue로 조건은 작업시간 짧은게 빨리 나오게!! : priority queue는 내림차순으로 뽑고 싶으면 이더라 !!!! 원래 기존 sort할때 조건은 가 내림차순이였는데 헷갈림!! -> 다 넣었으면 이제 순서대로 작동 ..
프로그래머스 : 더 맵게 c++ programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 1. 우선순위 큐를 쓰면 굉장히 쉽게 쓰지만 이게 안떠올랐다면 굉장히 고생한다 2. 기본 while문이지만 조건이 조금 특이함 -> 두개를 뽑아서 써야되므로 size가 2 이상일때만! -> 젤 작은거도 K를 넘는다면 스톱 #include #include #include #include using namespace std; int solution(vector ..
프로그래머스 : 프린터 c++ programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 풀이 및 후기 1. 처음에 while문 안에서 priorities 벡터 다 탐색하는 방식을 썻는데 시간초과! 2. a라는 우선순위 오른차순 벡터를 만들어서 쓸거임 -> answer를 index 처럼 쓰면서 뽑아도 되는 값인지 판단! 3. 뽑을 수 없는거면 대기목록 가장 맨뒤에 넣는거니까 queue 사용 4. 가장 높은 우선순위 값이 나왔으면 일단 뽑고, 내가 원하는 것인 경우 b..