문제 링크 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 풀이 우선순위 큐를 이용하여 푸는 문제다 // init 우선순위 큐(priority_queue)를 작은 것이 먼저 나오도록 order를 바꿔준다. pq의 생성자{pq(scoville.begin(), scoville.end())}로도 해도 되지만 for문을 이용해서 push해주었다. // process 우선순위 큐의 top()은 가장 작은 원소값(가장 안매운 스코빌 지수)이 나온다. 이를 이용해서 pop()을 두 번한다. cur = 가장..
문제 링크 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 풀이 DFS/BFS 파트에 있지만 문제를 보고 union-find가 먼저 떠올라서 union-find로 풀었다. // 요약 // find_root() - root를 찾아주는 재귀로 구현한 함수 // init 자신을 root로 설정 // process 인접행렬 computers가 대각선을 기준으로 대칭되므로 연산을 줄이기 위해 반복문을 최소한으로 돌게한다. (i = 0~n-1일 때, j=i+1 ~ n이다) { 연결돼있다면, 각 i와 j의 roo..
문제 링크 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 문제에서 중간에 타겟넘버가 되는 경우가 없고 최종까지 가야 타겟넘버로 지정하는 것이므로 "완전탐색"이다. 재귀로 최종까지 가게되면(index값이 size랑 같을 경우) target이 같은지 여부에 따라 return 1과 0을 나누었다. 더보기 #include #include #include #include using namespace std; // +, - 만 하기 // 숫자가 담긴 배열 nu..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 모든 레코드 조회하기 '*'을 이용하여 조회 더보기 SELECT * FROM ANIMAL_INS 2. 역순 정렬하기 ORDER BY 이용하여 DESC로 내림차순하여 조회 더보기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC 3. 아픈 동물 찾기 WHERE 조건 조회 더보기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = "SICK" 4. 어린 동물 찾기 WHE..
문제 링크 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 �� programmers.co.kr 풀이 그림을 잘 보면 안쪽(노랑)의 width와 전체 카펫의 width는 2개의 격자 차이, 안쪽(노랑)의 height과 전체 카펫의 height은 2개의 격자 차이를 볼 수 있다. 따라서, 안쪽 색깔(노랑)의 width와 height을 알기 위해 약수를 구하면서 "(width+2) * (height+2) = 전체 카펫의 격자 개수" 식을 이용한다. 위 식이 참을 나타내는 width+2와 height+2에 대해 리턴해준다. - 참고! widt..
문제 링크 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린�� programmers.co.kr 풀이 문제를 보면 Queue 문제를 느낄 수 있었다. 우선순위 큐(Priority Queue) 문제로 보았는데 같은 원소가 중복될 수 있어서 일반 Queue를 사용했다. 문제에 주어진 작업 순서대로 수행하였다. // init 1. 우선순위 목록을 검색할 수 있는 v(vector) 컨테이너를 내림차순으로 정렬한다. 2. Queue에 원소들을 넣는다. // process Queue에 원소가 남아있지 않을 때까지 반복문을 돌린다 { 제일 앞에 있는 원소를 ..
문제 링크 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 풀이 처음에 무작정 배열로 풀다가 고생했다. 해결방법은 그리고 (시작시간+다리 길이)가 해당 트럭이 빠져나오는 시간인 것을 파악하고 다리가 순서대로 빠져나오므로 Queue문제인것은 확실해서 여러 조건문을 달고 정리하여 해결했다. 조건은 다음과 같이 나눌 수 있다. 1) 다리가 비어있을 경우(트럭을 무조건 올릴 경우) 2) 다리가 비어있지 않을 경우 2.1) 트럭이 빠져나올 수 있는 경우 2.1.1) 트럭을 올릴 수 있는 경우 (현재..
문제 링크 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 � programmers.co.kr 풀이 // init과 // process로 나뉜다. 중복 없이 생성되는 set 컨테이너 이용 // init --- nums에 만들어질 숫자들 저장(사실 이때 소수판별 해도 됨) // process --- 소수 판별 // init 1) 1자리만 미리 set에 할당 - stoi()가 char형에 대해서 안되므로 string으로 casting - atoi()로 할 수도 있지만 char*형으로 바꿔야 한다. 2) 2자리 이상에 대해서 숫자 ..