[프로그래머스] Lv.1 폰켓몬 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr N마리의 폰켓몬이 주어지며 각 폰켓몬은 고유 번호를 가진다. [1, 3, 4, 1] 의 경우는 아래와 같다. 1: 2마리3: 1마리4: 1마리 나는 N/2마리의 폰켓몬을 데려가길 원하고, 가장 많은 종류의 폰켓몬을 데려가려면 어떻게 해야 할까? 풀이 방법Hashmap을 사용했다.정렬의 필요가 없고 범위가 크다.폰켓몬 종류번호 1 ~ 200,000폰켓몬 수 1 ~ 1000020만 범위의 배열을 사용할 수도 있지만 for문을 돌리는데 시간이 오래 걸..
[백준] 10026번 - 적록색약 c++
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/10026 문제 설명적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다.크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 아래와 같은 경우를 보자.RRRBBGGBBBBBBRRBBRRRRRRRR 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4  (빨강 2, 파랑 1, 초록 1)적록색약인 사람이 봤을 때 구역의 수는 3 (빨강-초록 2, 파랑 1)  풀이 방법이 문제는 DFS(깊이 우선 탐색)로 해결할 수 있다.  1.  DFS 탐색 기본 구조:현재 위치에서 상하좌우로 이동하며 연결된 칸을 탐색한다.이미 방문한 칸이..
[프로그래머스] Lv.0 진료순서 정하기 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/120835 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이해가 되지 않아 한참 고민했던 문제다. 응급도를 기준으로 진료 순서를 정한다. 즉, 응급도가 높은 순서로 먼저 치료한다. 하지만 출력은 응급도 순서대로 정렬된 배열이 아니라, emergency 배열의 원래 순서를 기준으로 응급도를 저장해야 한다. 예를 들어, 환자들의 emergency가 [30, 10, 23, 6, 100]일 경우, 응급도가 높은 순서부터 보면 100이 가장 높고 6이 가장 낮다.따라서 결과는 [2, 4, 3, 5, 1]로 ..
[프로그래머스] Lv.1 추억 점수 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 방법vector에서 find 함수만 사용할 수 있다면 이 문제는 쉽게 풀 수 있다. find 함수는 특정 값이 vector에 있는지 확인할 때 사용하는 함수다. 값을 찾으면 해당 값의 위치를 알려주는 iterator를 반환하고, 값을 찾지 못하면 vector.end()를 반환한다. 여기서는 photo 벡터의 이름이 name 벡터에 존재하는지 확인하고, 존재한다면 그 이름의 인덱스를 구해서 yearning 값을 더하면 된다. 주어진 정보..
[백준] 1940번 - 주몽 c++
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/1940 문제 설명각각의 재료는 고유한 번호를 가진다.두 개의 재료로 하나의 갑옷을 (두 재료의 합이 고유번호 m) 만드는데 몇 개나 만들 수 있는지 구한다.풀이 방법재료가 15000개가 있으므로 모든 조합을 확인할 경우 매우 오래걸린다.15000C2 =  약 1억 1000으로 매우 비효율적이다.정렬이 필요하지 않고 검색을 빠르게 하는 게 최우선 이므로 자료구조 hashmap을 사용한다.이경우 find에서 O(1)이 시간이 걸리므로 시간복잡도를 O(n)으로 줄일 수 있다.풀이 코드#include #include using namespace std;int n,k,num,answer;int main() { unordered_map weapon; ..
[프로그래머스] Lv.2 주차 요금 계산 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2022 KAKAO BLIND RECRUITMENT에 나온 문제이다.주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 한다. 조건차량이 입차되면 IN, 출차되면 OUT 기록이 주어진다.출차 기록이 없는 차량은 23:59에 출차한 것으로 간주한다.차량 번호가 같은 차량이 여러 번 입차할 수 있으며, 이를 누적 계산해야 한다.같은 차량 번호는 오름차순으로 정렬하여 결과를 출력해야 한다.풀이 ..
[프로그래머스] Lv.0 정수를 나선형으로 배치하기 c++
·
Algorithm/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr n*n의 배열에 숫자를 1부터 n까지 나선형으로 배치하면 된다.처음에 감이 너무 안 잡혀서 헷갈렸다.구현 문제이고 조건과 범위만 명확히 작성하면 된다.풀이 방법나선형으로 이동시 입력 방향은 고정이다.{오른쪽, 아래, 왼쪽, 위} 이 4방향을 반복적으로 사용하려면 모듈러 연산을 사용한다. 2차원 배열을 만들어 범위를 넘을 경우, 이미 배열에 숫자가 입력된 경우 방향을 변경한다.모든 숫자가 입력될때까지 반복한다. 사실 2차원 백터에 직접 입력받을..
[백준] 16928번 - 뱀과 사다리게임 c++
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/16928 문제 설명뱀과 사다리 게임을 들어본 사람들이 있을 거다. 1부터 시작하여 100번 위치까지 도착하면 되는데 주사위를 굴렸을 때 도착한 위치에 사다리가 있다면 위로,도착한 위치에 뱀이 있다면 아래로 내려가면 된다.내가 주사위 수를 조작할 수 있다면 어떻게 최단 횟수로 100의 위치에 도착할 수 있을 것인가?풀이 방법BFS(너비우선탐색)으로 풀면 된다.1번 칸부터 시작하여 주사위를 굴렸을 경우 1~6까지 전부 탐색해서 최솟값을 찾는다.100번째 칸에 먼저 도착한 값이 최소경우가 된다. 예를 들어, 주어진 사다리와 뱀이 다음과 같다고 가정한다. • 사다리:  2번 → 38번, 7번 → 14번, 8번 → 31번 • 뱀: 16번 → 6번, 49번..