본문 바로가기

OLD_알고리즘224

Programmers - BFS/DFS ] Lv.2 타겟 넘버 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr ✍ 문제풀이 재귀로 구현해서 풀었다. 함수 dfs의 매개변수는 두 개이다. void dfs( int index, int total ) 로 index와 sum 값인 total이다. 함수는 간단하게 아래와 같이 구현한다. 1) idx == numbers.size( ) 이면 total == target을 체크하고 같으면 answer++. 함수를 종료한다. 2) bfs ( idx + 1, total + numbers.. 2021. 6. 2.
Programmers - 해시 ] Lv.2 위장 #해시 #map 코딩테스트 연습 - 위장 programmers.co.kr ✍ 문제풀이 스파이는 하루에 최소 한 개의 의상은 입습니다. 위의 조건을 만족하는 경우의 수를 계산해보자 만약 상의(a, b, c) 3가지, 얼굴(nn, mm) 2가지가 있다. 이 때 상의는 A, 얼굴은 B라고하자. 경우의 수는 1) a - X (상의 a와 얼굴은 아무것도 안 쓰는 경우) 2) b - X 3) c - X 4) nn - X 5) mm - X 6) a - nn 7) b - nn 8) c - nn 9) a - mm 10) b - mm 11) c - mm 12) X - X 총 12가지의 경우가 있다. 하지만 하루에 최소 한 개의 의상은 입으므로 12번인 둘 다 아무것도 입지 않는 경우를 제외해야 한다. 따라서 구현 식은 (.. 2021. 6. 2.
C++ ] Hash - map Hash란 Key-value쌍으로 데이터를 저장하는 자료구조입니다. Map Maps are associative containers that store elements formed by a combination of a key value and a mapped value, following a specific order. In a map, the key values are generally used to sort and uniquely identify the elements, while the mapped values store the content associated to this key. The types of key and mapped value may differ, and are grouped t.. 2021. 6. 2.
Baekjoon - 그리디 ] 11399 ATM #그리디 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을.. 2021. 5. 26.