전체 글(223)
-
[알고리즘] Swift -백준 # 1743 (음식물 피하기) -DFS
문제링크 https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 ..
2022.08.21 -
[알고리즘] Swift -백준 #11724 (연결 요소의 개수) -DFS
문제링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u..
2022.08.20 -
[알고리즘] Swift -백준 #10951 (A+B -4)
문제링크 https://www.acmicpc.net/problem/10951 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 풀이 과정 정수를 입력받고 합을 출력한다 테스트케이스 개수가 정해지지 않아 계속 입력받는다 입력이 주어지지 않으면 반복문을 끝낸다. 처음에 xcode에서 실행했을 때 인덱스 오류가 난다 그래서 틀린 줄 알았는 데 백준에서 제출하니 맞았다는 결과가 나왔다. 아니 틀린 줄 알고 찾아봤네... 풀이 while let input = readLine()..
2022.08.20 -
[알고리즘 기초] 그래프, DFS/BFS/백트래킹, 길찾기문제 예시
👉 그래프 정점과 정점간의 관계를 표시하는 간선으로 구성된 자료 ex) 지하철 노선의 최단 경로 (지하철역 = 정점) 👉 그래프 구성요소 1) 정점 (Node, Vertex) 2) 간선 (Edge) 👉 그래프 관련 용어 1) 방향 방향 그래프 무방향 그래프 (=양방향 그래프) 2) 순환 (cycle) 순환 그래프 비순환 그래프 → 어디에도 사이클이 하나라도 있으면 순환그래프 방향성 비순환 그래프 (DAG)→ 과거에서 미래로 계속 진행하기에 방향성 → 미래에서 과거로 갈 수 없기에 비순환 ex) 블록체인, 깃허브브랜치 3) 연결요소 1개 안에 있는 노드들은 서로 이동가능 👉 코드로 그래프 나타내는 방법 1) 인접행렬 검색 속도가 빠르다 O(1) 2) 인접리스트 차지하는 메모리가 적음 시간복잡도 O(n) 간..
2022.08.20 -
[알고리즘] Swift -백준 #1182 (부분수열의 합) -조합/브루트포스/백트래킹
문제링크 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의..
2022.08.20 -
[UIKit] SwiftUI Preview 맛보기
#if DEBUG import SwiftUI struct ViewControllerRepresentable: UIViewControllerRepresentable { func updateUIViewController(_ uiView: UIViewController,context: Context) { // leave this empty } @available(iOS 13.0.0, *) func makeUIViewController(context: Context) -> UIViewController{ HomeVC() } } @available(iOS 13.0, *) struct ViewControllerRepresentable_PreviewProvider: PreviewProvider { static var..
2022.08.14 -
[UIKit] 스토리보드 없는 프로젝트 세팅
프로젝트 생성 Main Interface 부분 삭제 version 14.2 Main 스토리보드 삭제 Info.plist 파일에서 스토리보드 삭제 메인 VC 설정 SceneDelegate 파일에 가서 설정한다 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { //윈도우 씬을 가져온다 guard let windowScene = (scene as? UIWindowScene) else { return } //윈도우 크기 설정 window = UIWindow(frame: UIScreen.main.bounds) //뷰컨트롤러 인스턴스 생성 le..
2022.08.14 -
[UIKit] 카카오 (다음) 지도 API 사용하기(2)
자신의 위치를 위도와 경로로 받아서 지도의 가운데로 설정 mapView.setMapCenter(MTMapPoint(geoCoord: MTMapPointGeo(latitude: 37.456518177069526, longitude: 126.70531256589555)), zoomLevel: 1, animated: true)
2022.08.14 -
[UIKit] 카카오 (다음) 지도 API 사용하기
SDK 다운로드 https://apis.map.kakao.com/ios/guide/#step1 내 애플리케이션 추가하기 https://developers.kakao.com/console/app 카카오계정 로그인 여기를 눌러 링크를 확인하세요. accounts.kakao.com iOS추가하고 BundleID 입력 나의 번들아이디는 처음 프로젝트를 생성할 때 정하고 General 가면 확인할 수 있다. 이거랑 카카오 애플리케이션에서 번들아이디를 같게 적어줘야한다 카카오 네이티브앱키 입력 위에서 다운받은 SDK파일을 압축을 풀고 lib 폴더로 들어가서 DaumMap.embeddedframework 파일을 내 xcode프로젝트에 복사한다 다음지도프레임워크가 사용하는 프레임워크들을 추가해줘야한다 - OpenGLE..
2022.08.14 -
[Design Pattern] 디자인패턴 -Delegate Pattern (델리게이트 패턴)
🧸 Delegate Pattern (델리게이트 패턴) 이란? 사전적의미는 '위임하다'라는 뜻이다. 즉 위임자를 갖고 객체가 다른 객체에게 자신의 일을 위임하는 형태의 디자인 패턴이다. 🧸 이벤트를 전달하는 방식 만약에 A뷰컨트롤러에서 B뷰컨트롤러로 이동할 때 A에서 B로 이벤트를 전달하는 방식은 쉽지만 반대로 B에서 A로 전달할 때에 Delegate패턴을 사용한다. Delegate는 Protocol 과 쌍으로 사용한다. B에서 이벤트가 발생했을 때 A가 알 수 있게 전달해주는 것이고 A는 그것을 Protocol로써 알 수 있는 것이다. ✔️ 사용예시 1 첫번째VC에서 두번째VC를 띄우고 두번째VC를 dismiss 했을 경우 두번째VC데이터를 첫번째VC로 가져온다 더보기 2022.09.01 - [STUDY..
2022.08.14 -
[UIKit] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트
스토리보드에 테이블뷰를 추가한다. 스토리보드의 테이블뷰를 뷰컨트롤러에 선언해준다 @IBOutlet weak var myTableView: UITableView! 테이블뷰셀을 만든다 새로운 파일 추가하여 Cocoa Touch Class에서 UITableViewCell 파일을 선택하여 XIB파일도 함께 생성해준다. 테이블뷰셀을 꾸민다 오른쪽 인스펙터 화면에서 identifier 이름을 설정해준다 (헷갈리지않게 파일이름과 똑같이 만들어준다) 뷰컨트롤러에서 테이블뷰를 연결한다 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var myTableView: UITableView! ove..
2022.08.14 -
[알고리즘] Swift -백준 #14235 (크리스마스 선물)
문제링크 https://www.acmicpc.net/problem/14235 14235번: 크리스마스 선물 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 www.acmicpc.net 문제 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 산타의 썰매는 그렇게 크지 않기 때문에, 세계 곳곳에 거점들을 세워 그 곳을 방문하며 선물을 충전해 나갈 것이다. 또한, 착한 아이들을 만날 때마다 자신이 들고있는 가장 가치가 큰 선물 하나를 선물해 줄..
2022.08.14 -
[알고리즘] Swift -백준 #1935 (후위 표기식2)
문제링크 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는..
2022.08.14 -
[알고리즘] Swift -백준 #5397 (키로거)
문제링크 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 ..
2022.08.14 -
[알고리즘] Swift -백준 #13417 (카드 문자열)
문제링크 https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 문제 N장의 카드가 일렬로 놓여있다. 각 카드에는 알파벳이 하나씩 적혀있다. 태욱이는 가장 왼쪽에 있는 카드부터 차례대로 한 장씩 가져올 수 있다. 가장 처음에 가져온 카드는 자신의 앞에 놓는다. 그다음부터는 가져온 카드를 자신의 앞에 놓인 카드들의 가장 왼쪽, 또는 가장 오른쪽에 놓는다. 태욱이는 모든 카드를 다 가져온 후에 자신의 앞에 놓인 카드를 순서대로 이어 붙여 카드 문자열을 만..
2022.08.13 -
[알고리즘] Swift -백준 #10799 (쇠막대기)
문제링크 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이..
2022.08.13 -
[알고리즘 기초] 시간복잡도, 자료구조
배열 삽입삭제는 느리고 조회는 빠르다 배열의 인덱스를 지정하여 한 삽입삭제의 시간복잡도 : O(n) insert() 는 느린 연산이다. 마지막에 추가하는 시간복잡도 O(1) append() 조회 → 임의접근이 가능하기 때문에 속도가 빠름 O(1) 임의 접근 : 인덱스값이 있기에 연결리스트 배열과 반대 삽입삭제는 빠르고 조회는 느리다 insert() → O(1) delete() → O(1) 임의접근이 가능하지 않음 (어디있는 지 보장할 수 없어서) 처음 노드가 다음 노드의 주소값을 가지고 있기에 스택 선입후출 , 후입선출 들어가는 순서와 나가는 순서가 반대 마지막으로 들어온 게 제일 처음으로 나간다 삽입삭제 → O(1) 무조건 맨위의 값이 나가고 들어올때도 마지막으로 들어오기 때문에 큐 스택의 반대 선입선..
2022.08.13 -
[알고리즘] Swift -백준 #1302 (베스트셀러) -딕셔너리정렬
문제링크 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주..
2022.08.13 -
[알고리즘] Swift -백준 #3986 (좋은 단어)
문제링크 https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 문제 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 깨고 말았다. 안타깝게도 자는 동안 키보드가 잘못 눌려서 보고서의 모든 글자가 A와 B로 바뀌어 버렸다! 그래서 평석이는 보고서 작성을 때려치우고 보고서에서 '좋은 단어'나 세보기로 마음 먹었다. 평석이는 단어 ..
2022.08.12 -
[알고리즘] Swift -백준 #1764 (듣보잡)
문제링크 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루..
2022.08.12