본문 바로가기

알고리즘/프로그래머스28

[ 프로그래머스 / BFS ] 카카오 프렌즈 컬러링 북 1. 문제 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 2. 소스코드 - 대놓고 BFS 쓰라는 문제라서 무난했다. - 전역변수로 선언해도 초기화를 해주지 않으면 에러가 났다. 전역변수 기본 초기화가 안 먹는 문제인듯. 1) 배열 전체를 돌면서, 0이 아니고, 방문 하지 않은 위치를 BFS한다. 발견 시, 새로운 구역이므로 구역 수++ 2) 해당 영역을 모두 탐색하고 area 넓이를 반환한다. 3) 정답과 비교 후 최대 크기인 경우, 갱신한다. 4) 1으로 돌아가 반복한다. 소스코드 #include #incl.. 2020. 6. 30.
[ 프로그래머스 / map ] 전화번호 목록 1. 문제 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 2. 소스코드 - map을 이용해서, 해당 현재 문자열의 앞부분이 존재하는지 확인해주면 된다. 소스코드 #include #include #include using namespace std; unordered_map map; bool solution(vector phone_book) { for(string str : phone_book) map[str] = 1; int size = phone_book.size(); for(int i = 0; i .. 2020. 6. 30.
[ 프로그래머스 / sort ] H-Index 1. 문제 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 2. 소스코드 - 정렬 후, 정답이 될 수 있는 값보다 크거나 같은 지 비교해주면된다. #include #include #include using namespace std; int solution(vector citations) { int size = citations.size(); int answer = size; sort(citations.begin(), citations.end()); for(int i = 0 ; .. 2020. 6. 29.
[ 프로그래머스 / 힙 ] 더 맵게 풀이 1. 문제 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 2. 소스코드 - 가장 안 매운 음식 2개를 섞어서 맵게 만든 뒤, 매운 정도가 K를 넘을 때의 최소횟수를 반환. 불가능 하면 -1 - 매번 정렬을 해서 답을 구할 수 도 있지만, 그러면 시간복잡도 때문에 PASS할 수 없다. - 따라서, 힙을 사용해야한다. - 대표적으로 우선순위 큐가 있다. - 우선 순위큐에 비교함수를 바꿔 낮은 수가 가장 앞으로 오게 할 수 있지만, 그냥 -1을 곱해서 사용해도 된다. #include #includ.. 2020. 6. 29.