본문 바로가기

swift42

백준 - 두 로봇 - 15971 - swift https://www.acmicpc.net/problem/15971 15971번: 두 로봇 입력에서 두 번째 줄에 주어지는 방번호는 1과 2, 세 번째 줄에 주어지는 방 번호는 2와 3, …, i번째 줄에 주어지는 방 번호는 i-1과 i, …, N번째 줄에 주어지는 방 번호는 N-1과 N이다 (아래 입력과 www.acmicpc.net bfs 또는 dfs , 그래프탐색 유형이다. 굉장히 좋은 문제라고 생각한다. 그래프탐색의 골드5의 난이도는 그렇게 어렵지 않지만, 핵심을 파악하는게 꽤 걸렸다. ( 사실 그마저도 다른 분의 코드를 참고해서 깨달았다. ) 이 동굴에는 총 N개의 넓은 방이 존재하며 좁은 통로로 서로 연결되어 있는 것으로 밝혀졌다. N개의 방은 1번부터 N번까지의 번호를 붙여 1번 방, 2번 방.. 2021. 8. 25.
백준 - 회의준비 - 2610 - swift https://www.acmicpc.net/problem/2610 2610번: 회의준비 첫째 중에 회의에 참석하는 사람의 수 N이 주어진다. 참석자들은 1부터 N까지의 자연수로 표현되며 회의에 참석하는 인원은 100 이하이다. 둘째 줄에는 서로 알고 있는 관계의 수 M이 주어진다. 이 www.acmicpc.net 유형은 bfs탐색 또는 플로이드 워셜로 볼 수 있다. 문제를 푸는 데 있어서 핵심 로직은 다음과 같다. 1. 서로 알고 있는 사람은 반드시 같은 위원회에 속해야 한다. 2. 효율적인 회의 진행을 위해 위원회의 수는 최대가 되어야 한다. 사실 1번을 만족한다면 2번은 자동적으로 만족할 수밖에 없다. 즉 2번은 그다지 고려하지 않아도 되는 부분이다. 그러므로, 위원회를 만들어주기 위한 그룹핑이 필요.. 2021. 8. 24.
백준 - 쇠막대기 - 10799 - swift https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제는 스택 유형이다. 나름 재밌는 문제 였다. 특정 문제들은 특정 알고리즘을 쓰면 풀 수 있는 그런 뻔한 문제들이 있는데, 그런 문제 말고 이렇게 직접 문제 해결 과정을 오롯이 찾아가는 문제가 재밌다. 처음 봤을때는 이걸 어떻게 접근해야하는지, 감이 안왔다. 레이저기준으로 양옆을 확인해야하는지... 등등 시도 해봤지만 다 영 아니였다. 그러다가, 스택으로, 앞에서부터 순차적으로 확인하는걸로 생각해봤다. 만.. 2021. 8. 24.
백준 - 구슬 탈출 1, 2, 4, 13459, 13460, 15653 - swift https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 조금 난이도 있는 구현, bfs 문제라고 생각한다. 구현에 있어서 고려할 요소가 몇 개 있다. 기울이는 동작을 그만하는 것은 더 이상 구슬이 움직이지 않을 때까지이다. 즉, 좌, 우, 위, 아래 움직일 때 한 칸만 움직이는 것이 아닌 끝까지 움직이도록 해야 한다. 그리고 더 이상 움직이지 않을 때는, 벽에 부딪히거나, 또는 다른 구슬에 부딪힌 경우다... 2021. 8. 23.
프로그래머스 - 위클리 챌린지 4주차 - 직업군 추천하기 - swift https://programmers.co.kr/learn/courses/30/lessons/84325 코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 난이도가 낮은 구현 문제라고 할 수 있다. 주어진 조건대로 구현하면 문제 없다. 개발자가 사용하는 언어의 언어 선호도 x 직업군 언어 점수 의 총합이 가장 높은 직업군을 return 하도록 solution 함수를 완성해주세요. 총합이 같은 직업군이 여러 개일 경우, 이름이 사전 순으로 가장 빠른 직업군을 return 해주세요. 문제는 총 5개의 직업군이 존재하므.. 2021. 8. 23.
백준 - 주간 달력 - 22936 - swift https://www.acmicpc.net/problem/22936 22936번: 주간 달력 주간 달력(주력)은 일요일부터 토요일까지 총 7일간의 일정이 들어있는 달력이다. 작년 수현이는 일 년 짜리 달력에 코팅 용지를 붙여 사용했는데, 올해는 조금 더 똑똑해져서 주력에 테이프를 www.acmicpc.net 완전 탐색 및 누적합 문제 유형 같다. ( 알고리즘 유형에는 구간합이 없었지만, 내가 난이도 기여해서 누적합을 추가했다 ) 나름 재밌었던 문제다! 문제의 지문이 조금 애매한 것 같은데.. ( 그래도 풀 수 있었으니 ) 우선 핵심 지문들이 있다. 주력 하나에 들어갈 수 있는 일정의 개수는 제한이 없고, N개의 주력은 서로 연속되어야 한다. 주력의 맨 처음 날짜는 1 이상이어야 하고, 요일은 신경 쓰지 .. 2021. 8. 22.
백준 - 쿠키크루 - 22939 - swift https://www.acmicpc.net/problem/22939 22939번: 쿠키크루 밀가루반죽으로 잘 구워진 킴쿠키는 광활하고 평평한 들판 위에 세워진 쿠키나라의 시민이다. 킴쿠키는 케이크나라의 침략으로 어려워진 쿠키나라를 지키기 위해 할 수 있는 일이 없을까 늘 고 www.acmicpc.net 완전탐색 및 구현 문제라고 볼 수 있다. 처음에 가장 가까운 토핑들만 탐색하는 bfs로 접근했는데 틀렸다. 사실 그 방법으로도 의문점이 있었다. 반례가 존재할 것 같았다. 집 - [토핑 1, 2, 3] - 도착지점 이렇게 bfs로 탐색한다고 해서 최소거리가 보장 된다는 점이 없다는 것이다. 그래서 이 점을 해결하기 위해 순열로 각 토핑들의 방문위치를 정해주는 것이다. 총 3개의 토핑들이 있으므로, 총 6개.. 2021. 8. 22.
LeetCode - 98. Validate Binary Search Tree - swift https://leetcode.com/problems/validate-binary-search-tree/ Validate Binary Search Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 노드를 이진 탐색 트리인지 판별하는 문제다. 이진 탐색 트리는 왼쪽 자식 노드는 부모 노드보다 작아야 하며, 오른쪽 자식 노드는 부모 노드보다 커야 한다. 뿐만 아니라, 자식의 자식들도 부모 노드보다 크거나 작아야 한다. 즉 아래의 경우는 이진 탐색 트.. 2021. 8. 20.