문제 링크입니다. https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 풀이 방법 재귀함수를 이용하여 문제를 해결합니다. 이 문제는 팀 나누기, 각 팀의 능력치 구하기 두 기능을 수행해야 합니다. 이를 위해 solve, calculateTA 함수를 만들어 각 기능을 구현했습니다. solve 함수에서는 특정 사람(idx)이 스타트팀인지 아닌지를 기준으로, 재귀함수를 실행합니다. idx가 스타트팀일 때는 스타트팀원의 수를 뜻하는 startTeamNum을 하나 증가시켜 재귀함..
문제 링크입니다. https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 풀이 방법 주어진 조건을 그대로 구현하는 시뮬레이션 문제입니다. 로봇청소기가 청소한 영역과 청소하지 않은 영역을..
문제 링크입니다. https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 풀이 방법 dfs 알고리즘을 사용합니다. dfs 알고리즘에 대한 설명은 아래 링크를 참고해주세요. 2019/09/19 -..
문제 링크입니다. https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이방법 다이나믹 프로그래밍 기법을 사용해 문제를 해결합니다. DP 문제를 풀 때에는 점화식을 세우는 게 중요합니다. 이 문제의 점화식은 solve 함수의 for loop에 해당합니다. 수익이 상담이 마쳐진 다음날 들어온다고 가정했을 때, dp[i]은 i번째 날에 가질 수 있는 최대 금액입니다. 각 loop은 먼저 i번째 날에 일을 했을 경우를 계산합니다. i번째 날에 일을 했을 경우엔 i + t[i] 날에 수익이 들어옵니다. 따라서 dp[i + t[i]]을 새롭게 계산해줍니다. 그리고 다음 loop으로 넘어가기 전..
문제 링크입니다. https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 풀이 방법 브루트포스 알고리즘을 사용합니다. 테트로미노는 5개의 모양를 가지지만 상하좌우 방향을 달리함에 따라 1..
문제 링크입니다. https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 풀이 방법 주어진 조건을 그대로 구현하는 시뮬레이션 문제입니다. 각 시험장에 필요한 감독관 수를 ans 변수에 더하여, 전체 시험장에 필요한 최소 감독관 수를 출력합니다. for loop을 통해 각 시험장에 필요한 감독관 수를 계산합니다. 총감독관과 부감독관을 나눠서 계산합니다. 총감독관은 시험장마다 무조건 한 명씩 필요합..
문제 링크입니다. https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 풀이방법 최대 5번 이동시켰을 때의 최댓값을 구하는 문제이므로 dfs 알고리즘을 사용하여 해결합니다. 이 알고리즘에 대한 설명은 아래 링크를 참고해주세요. https://dvpzeekke.tistory.com/37?category=887119 [c++] DFS(..
'유클리드 호제법'이란? 유클리드 호제법(혹은 유클리드 알고리즘)은 빠르게 최대공약수(GCD)를 구하는 알고리즘입니다. 참고로 GCD는 Greatest Common Divisor의 약어! LCM은 Least Common MultiPle의 약어! '유클리드 호제법'의 원리 두 자연수 a, b가 주어졌을 때, a를 b로 나눈 나머지가 temp라고 하면, temp가 0일 때 b가 최대공약수(GCD)입니다. 만약 temp가 0이 아니면 a에 b값을 넣고, b에 temp값을 넣은 다음 위 과정을 반복합니다. '유클리드 호제법'의 구현 방법 반복문을 이용해 구현하거나 재귀함수를 이용해서 구현할 수 있습니다. 먼저 반복문을 이용해 구현하는 법을 소개하겠습니다. int gcd(int a, int b) { int tem..
문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 N number return 5 1..
문제 링크입니다 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. www.acmicpc.net DFS, BFS에 대한 설명은 아래 링크를 참고해주세요. https://dvpzeekke.tistory.com/37?category=887119 [c++] DFS(Depth First Search) 알고리즘 BFS 알고리즘은 깊이를 우선으로 탐색하는 알고리즘 입니다. 즉..
- Total
- Today
- Yesterday
- Swift
- Collection
- 코딩테스트
- 컬렉션
- 서머코딩
- dfs
- algorithm
- c++
- 구슬탈출
- 알고리즘
- 호제법
- ios
- aws
- SummerCoding
- 자료구조
- Xcode
- isempty
- 깊이우선탐색
- 삼성역량테스트
- count
- 이진트리
- 시뮬레이션
- 스위프트
- 프로그래머스
- BFS
- Programmers
- ec2
- 백준
- dp
- datastructure
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |