분류 전체보기
-
백준 13460 구슬 탈출 2Algorithm/BOJ 2020. 7. 24. 13:32
출처: www.acmicpc.net/problem/13460 분류: 완전 탐색 접근방식 상하좌우로 회전시킬 수 있는 보드판 위에 빨강, 파랑 구슬, 빠져나갈 구멍이 있을 때 움직여서 빨간 구슬만 구멍에 넣어야 할 때 최소 횟수를 찾는 문제입니다. 단, 횟수가 10번을 초과하면 안됩니다. 판의 크기가 3 ~ 10 까지로 매우 작고 10번이라는 제한이 있기 때문에 모든 경우를 다 탐색해서 말그대로 완전 탐색으로 해결할 수 있습니다. 개인적으로 구현이 꽤나 까다로웠던 문제였습니다. 상하좌우로 다 해본다는 게 말은 쉽지만 생각보다 까다로웠습니다. 두 구슬은 겹칠 수 없기 때문에 다른 구슬이 앞에 있다면 그 구슬 뒤까지 움직여야 하고 말이죠... 구현 아이디어는 다음과 같습니다. 빨간 구슬과 파란 구슬은 계속 굴..
-
숙면의 모든 것일상/독서 2020. 7. 24. 10:42
2020년 7월 16일 ~ 2020년 7월 24일 잠에 대한 인식을 바꿔준 책이다. 잠은 누구에게나 예외없이 매일 필요하다. 그렇기 때문에 당연하게 생각하고 그 중요성에 대해 간과하고 있던게 아닐까. '4당5락' 이라는 말까지 있었을 정도로 잠을 줄여가며 열심히 일하는 것이 미덕처럼 인식되기도 한다. 이렇게 열심히 사는 걸 자랑스럽게 얘기하는 사람도 간혹 만날 수 있다. 나 역시 최소 7시간 에서 8시간을 자야한다는 말은 많이 들어봤지만, 사실 "일상 생활만 되면 덜 자도 크게 문제가 있을까?" 라는 생각을 갖고 있었다. 수면은 필요한가 "아인슈타인도 10시간 이상 잤다." 아인슈타인에 대해 잘은 모르지만, 나처럼 잘 모르는 사람도 아인슈타인이 희대의 천재라는 사실에는 이견이 없을 것이다. 아인슈타인도 ..
-
기기 회전 방향, interfaceOrientation 확인하기 in iOS 13.0iOS 2020. 7. 20. 22:28
핸드폰이 세로 방향 (portrait) 또는 가로 방향으로 (landscape) 회전할 때를 체크하려면 어떻게 해야하는지 알아보겠습니다. 아직도 구글링을 하면 예전 자료가 나오는데요, override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) { coordinator.animate(alongsideTransition: { context in if UIApplication.shared.statusBarOrientation.isLandscape { // activate landscape changes } else { // activate portra..
-
하버드 상위 1퍼센트의 비밀일상/독서 2020. 7. 20. 21:36
2020년 7월 8일 ~ 2020년 7월 16일 "말이 씨가 된다." 는 말이 있다. 이 책을 읽으며 제일 곱씹어 본 말이다. 사람들은 쉽게 말 한마디의 힘을 간과한다. 부정적일 수도 긍정적일 수도 있는 말 한마디는 모두 신호가 된다. 그리고 그 힘은 엄청나다. 이 책의 부제 "신호를 차단하고 깊이 몰입하라" 가 이 책을 정말 잘 요약해주고 있다고 생각한다. 이 책은 이를 뒷받침하기 위한 온갖 사례들로 이루어져 있다. 성공한 사람들이라면 누구든지 저마다의 노력의 중요성을 강조한다. 아인슈타인은 "나는 똑똑한 것이 아니라 단지 문제를 더 오래 연구할 뿐이다"라고 말했고 스티븐 킹은 "재능은 식탁에서 쓰는 소금보다 흔하다"라고 말했다. 세계적인 천재들이 재능이 아닌 노력을 강조하는 만큼 노력이 중요한 데는 ..
-
백준 8980 택배Algorithm/BOJ 2020. 7. 20. 16:10
출처: www.acmicpc.net/problem/8980 분류: 그리디 접근방식 출발 도시와 도착 도시, 용량이 적혀있는 택배 목록이 주어질 때 배달할 수 있는 최대 용량을 구하는 문제입니다. 단, 한번 지나온 마을은 다시 돌아갈 수 없습니다. 핵심 포인트는 다음 2가지 입니다. 문제의 핵심은 도착 도시를 기준으로 정렬 각 도시에서 적재 가능한 용량 체크 특히 도착 도시를 기준으로 정렬하는 것이 핵심인데요, 도착 도시를 기준으로 정렬했기 때문에 가장 먼저 내릴 수 있는 택배를 우선적으로 배달할 수 있습니다. 예를 들어, 3 60 3 1 3 50 1 2 30 2 3 60 이렇게 주어질 때 도착 기준으로 정렬합니다. 1 2 30 1 3 50 2 3 60 가장 먼저 도착하는 2번 마을에 배달해야 할 양 30..
-
백준 15683 감시Algorithm/BOJ 2020. 7. 16. 13:29
출처: www.acmicpc.net/problem/15683 분류: 완전탐색 접근방식 하.. 코드량이 너무 너무 너무 길었던 문제였습니다. 5개의 CCTV가 있고 각 CCTV는 90도로 회전이 가능합니다. 사각지대가 가장 최소가 되는 경우를 찾는 문제입니다. 각 CCTV 의 케이스는 1번 상하좌우 4개 2번 상하, 좌우 2개 3번 4개 4번 4개 5번 1개 입니다. 저는 CCTV를 먼저 찾아놓고 CCTV List를 다 탐색할 때 까지 DFS를 돌렸습니다. CCTV 에 케이스는 많지만 결국 지우는 건 방향에 따라 상하좌우 4가지 이므로 상하좌우 direction을 입력받는 함수를 만들어서 지우고 CCTV 타입별로 상 하 좌 우로 직접 입력해주는 방식을 사용했습니다. 더 스마트하게 풀 수도 있을 것 같은데 ..
-
백준 1107 리모컨Algorithm/BOJ 2020. 7. 16. 11:56
출처: www.acmicpc.net/problem/1107 분류: 완전 탐색 접근방식 돌고돌아 결국 순수한 완전탐색으로 해결한 문제입니다. 고장난 숫자 버튼이 주어질 때 원하는 채널을 만들기 위해 필요한 조작 횟수를 구하는 문제입니다. 조정할 수 있는 채널 중에서 원하는 채널과 가장 가까운 채널로 가서 + 혹은 - 로 조작하면 최소의 수를 구할 수 있... 을줄 알았으나, 생각보다 간단한 문제는 아니었습니다. 가장 가까운 채널을 어떻게 만들 것인가, "처음엔 수어진 숫자의 각 자리 마다 위, 아래로 가까운 수를 뽑으면 가장 가까운 수가 되겠구나." 라고 생각하고 접근했습니다. 5000 2 5 0 이렇게 주어지면, 5 와 0을 피해 가장 가까운 각 자리 수를 up, down으로 만들면, 밑으로 가장 가까운..
-
백준 14500 테트로미노Algorithm/BOJ 2020. 7. 15. 14:07
출처: www.acmicpc.net/problem/14500 분류: 완전 탐색 접근방식 주어진 5개의 테트로미노를 하나 놓을 때 테트로미노에 겹쳐지는 블록의 최대값이 얼마인지 구하는 문제입니다. 모든 경우를 다 체크하면 되겠지만 테트로미노는 회전 또는 대칭이 되기 때문에... 매우매우 귀찮습니다.. 😨 하지만 이 문제에는 귀찮음을 덜어줄 수 있는 법칙이 숨겨져 있습니다 :) 바로 ㅗ 모양을 제외한 테트로미노들은 한 점에서 dfs로 4개씩 탐색한 결과들입니다. 한 점에서 dfs로 4개의 블록을 고르면 4개의 테트로미노를 회전 대칭 시킨 모양안에 모두 포함됩니다! 대신 ㅗ 모양은 ㅗ ㅜ ㅏ ㅓ를 따로 찾아줘야 합니다. 해결방법 let nm = readLine()!.split(separator: " ").ma..