분류 전체보기
-
[백준 14501번 - 퇴사] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 18. 15:13
백준 14501번. 사용한 알고리즘 - dfs N이 최대 15이기 때문에, dfs 재귀로 시도를 먼저 해보았다. i번째 날부터 시작한다고 가정했을 때 dfs 를 호출한다. (총 N번 호출) 각 경우마다, 해당 날에 상담을 하고, 다음 상담 가능일부터~ N일 까지 dfs 를 호출한다. (N - 현재 날 - Ti 번 호출) 현재 날짜에 해당 상담을 하면 N일이 넘어가거나, N일이면 반환. 완성 코드 #include #include #include using namespace std; int n; vector v; int ans = 0; void dfs(int time, int curr_t, int result) { if (time + curr_t > n) { ans = (result > ans) ? resu..
-
[백준 1260번 - DFS와 BFS] C++ 풀이카테고리 없음 2021. 9. 18. 03:22
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 해당 문제는 DFS, BFS 의 기본 알고리즘을 연습하기 딱인 문제이다. 이 ..
-
[백준 14502번 - 연구소] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 18. 02:50
백준 14502번. 벽 3개를 추가로 세워서 바이러스가 퍼지지 않는 안전영역의 최대값을 구하는 문제이다. 사용한 알고리즘 - 브루트포스 - bfs 처음에는 벽 3개를 치는 경우의 수중 쳐낼 수 있는 가지수가 없나 생각을 해봤는데, 내 머리로는 도저히 떠오르지 않아서 그냥 다 구해보기로 했다. 3 = m || map[nx][ny] == 1 || map[nx][ny] == 2) { continue; } else { q.push(make_pair(nx, ny)); map[nx][ny] = 2; } } } } // 안전 영역 크기 구하기. for(int i = 0; i < n; ++i) { for(int j = 0; j < m; ++j) { if (map[i][j] == 0) result++; } } retur..
-
[백준 13458번 - 시험 감독] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 17. 02:07
백준 13458번. 간단한 식을 세워 구할 수 있는 문제였다. 각 시험장을 돌면서, 최솟값은 1. 응시자의 수에서 1(=총 감독관)을 뺀 수를 C 로 나눈 만큼 더해주고, 나머지가 있다면 1을 더 더해주면 된다. B, C가 1이고, N이 백만, Ai가 각 백만 응시자수가 있다면, 정답이 약 백만*백만 = 일조 이므로, long long 타입으로 선언해줬다. 완성 코드 #include #include using namespace std; int main() { int n, b, c; vector a; scanf("%d", &n); for(int i = 0; i < n; ++i) { int tmp; scanf("%d", &tmp); a.push_back(tmp); } scanf("%d %d", &b, &c)..
-
[백준 3190번 - 뱀] C++ 풀이알고리즘/삼성SW역량테스트기출 2021. 9. 16. 22:27
백준 3190번. N x N 정사각 보드가 있고, 초기 상태의 뱀의 위치는 (0,0), 몸길이는 1이다. (보드 한칸 = 몸길이 1) 주어진 방향대로 1초에 한 칸만큼 이동한다. 만약 그 칸에 사과가 있으면 먹고, 꼬리는 그대로 둔 채 머리만 이동한다. (즉, 몸 길이가 늘어난다.) 만약 그 칸에 사과가 없으면, 머리와 꼬리가 같이 이동한다. (즉, 몸 길이는 그대로다.) 사용한 알고리즘은 다음과 같다. deque 시뮬레이션 간략한 설명 뱀의 몸이 있는 위치를 저장하기 위해서 deque 를 하나 두었다. deque 는 앞/뒤 양방향으로 push/pop이 가능하기 때문에 뱀의 길이와 머리, 꼬리 위치가 변함에 따라 좌표 저장이 용이할 것이라는 생각이 들었다. 사과의 위치를 저장하기 위한 map, 뱀의 몸이..
-
[kotlin in action] 제네릭스와 변성프로그래밍 언어/kotlin 2021. 8. 25. 04:11
9.3 변성: 제네릭과 하위 타입 변성이 있는 이유: 인자를 함수에 넘기기 리스트의 내용을 출력만 하는 함수는 잘 작동한다. fun printContents(list: List) { println(list.joinToString()) } fun main(args: Array) { printContents(listOf("abc", "bac")) } 만약 리스트의 내용을 변경하는 함수라면? fun addAnswer(list: MutableList) { list.add(42) } fun main(args: Array) { val strings = mutableListOf("abc") addAnswer(strings) // 컴파일 안됨. } MutableList 가 필요한 곳에 MutableList을 넘기면 안..
-
[kotlin in action] 제네릭스프로그래밍 언어/kotlin 2021. 8. 25. 02:17
타입 파라미터 간에는 상/하위 관계가 없고 raw-type 간에만 상/하위 관계가 존재한다. Integer -> Number (O) List -> List List -> ArrayList (O) 실체화한 타입 파라미터 실체화한 타입 파라미터를 사용하면 인라인 함수 호출에서 타입 인자로 쓰인 구체적인 타입을 실행 시점에 알 수 있다. 선언 지점 변성 기저 타입(=제네릭 타입에서 타입 파라미터를 제외한 부분)은 같지만 타입 인자가 다른 두 제네릭타입 Type 와 Type가 있을 때 타입 인자 A와 타입 인자 B의 상위/하위 타입 관계에 따라 두 제네릭 타입의 상위/하위 타입 관계가 어떻게 되는지 지정할 수 있다. 사용 지점 변성 제네릭 타입 값 사이의 상위/하위 타입 관계 지정을 제네릭 타입 값을 사용하는 ..
-
[kotlin in action] 고차함수 : 파라미터와 반환 값으로 람다 사용카테고리 없음 2021. 8. 18. 11:29
인라인 함수 비로컬 return과 레이블 무명 함수 람다를 인자로 받거나 반환하는 고차함수 람다 안에서 더 유연하게 흐름을 제어할 수 있는 코틀린 특성인 인라인 함수 8.1 고차 함수 정의 고차 함수: 다른 함수를 인자로 받거나 반환하는 함수 코틀린에서는 람다나 함수 참조를 통해 인자로 넘기거나 반환할 수 있다. ex) filter 함수 list.filter { x > 0 } 함수 타입 람다를 로컬 변수에 대입하는 경우 val sum = { x: Int, y: Int -> x + y } val action = { println(42) } 각 변수에 구체적인 타입 선언 추가하기 val sum: (Int, Int) -> Int = { x, y -> x + y } val action: () -> Unit = ..