본문 바로가기

전체 글158

[프로그래머스] Summer/Winter Coding 지형 이동 level 4 MST 문제 : programmers.co.kr/learn/courses/30/lessons/62050 코딩테스트 연습 - 지형 이동 [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr 분석 : 문제를 구현하면 되는 식이었다. 크루스칼 알고리즘, spanning tree 처음 공부해보는데 백준에서 유제 문제를 더 풀어봐야겠다. c++ 코드 : // // [SW] 2019_terrainMove.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 202.. 2021. 5. 2.
[백준] 1937 욕심쟁이 판다 🐼 DP 문제 : www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 분석 : n x n 판다 집이 있으면 판다는 상하 좌우로 움직일 수 있고 현 위치에서 다음 날이 될때 이동하는데 이동하는 칸에 먹이가 더 많아야 움직일 수 있는 욕심쟁이 친구다. 그래서 최대로 살 수 (?) 있게 하는 날을 구하는 문제였다. arr배열에 밥을 넣어주고 dp를 동시에 0으로 초기화 시켜준 뒤 dp 함수를 돌면서 최대로 살 수 있는 maxRice (maxLife 변수가 더 적절할듯.. 2021. 5. 2.
[프로그래머스] 합승 택시 요금 2021 카카오 블라인드 테스트 level3 문제 : programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 분석 : 첫번째 접근 문제를 보아하니 a와 b가 따로 갔을때와 중간 지점 걸쳐서 도착한 .. 2021. 5. 2.
[프로그래머스] Summer/Winder coding 방문 길이 level2 문제 : programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 분석 : 처음에 dfs문제인줄 알고 마침 오늘 dfs 스터디 해서 dfs 짜다가 stack에 push 해줄 필요가 없음을 느끼고 단순 문자열 길이만큼 for문을 돌아 answer 값을 증가 해주는 식으로 간소화 하였다. 1. 첫 접근 방식 갔던 간선은 또 갈 수 없으니 2차원 visit 배열 생성 후 false인 좌표에 대해서만 answer 값 증가시키기 하지만 이 방식은 1번시, 도착 노드로 방문했던 (5,6)번지를 7번 작업 수행시 (5,6)번이 이미 방문한 노드가 되었으므로 7번 간선을 만들수 없게 된다. 그래서 정점 방식으로 접근하면 안된다.. 2021. 4. 30.
[프로그래머스] 순위 검색 2021 카카오 블라인드 테스트 level2 문제 : programmers.co.kr/learn/courses/30/lessons/72412 >str){ j++; if(j == 5){ memberScore.push_back(stoi(str)); continue; } memberSet[i].insert(str); } } for(int i = 0; i >str){ j++; if(str == "and"){ continue; } if(j == 8){ searchScore.push_back(stoi(str)); continue; } searchQuery[i].push_back(str); }.. 2021. 4. 28.
[iOS] Layout 정리 layout Frame 기반 모든 뷰의 위치를 설정해주는 방식, 가장 유연하고 빠른 성능을 보인다. auto layout 기반 View들 간의 관계를 이용하여 View의 위치와 크기를 동적으로 계산하는 Layout System 외부 변경 : super view의 크기나 모양이 변경될때 (ex> 회전, 분할 뷰) 내부 변경 : 인터페이스 뷰의 크기나 설정이 변경될때 발생 스토리 보드상 layout에 대해 살펴보자 Attrubuote 종류에는 이렇게 4가지가 있다. layout의 계산되는 선형 방정식 은 이러하다 그래서 매번 스토리 보드 왼쪽에 이러한 방정식을 볼 수 있는데 이것이 바로 그것이다 !! 그러면 safeArea와 view는 뭐가 다를걸까나 애플은 safeArea밖에 ui 배치시키지 말것을 권고했.. 2021. 4. 27.
[백준] 13460 구슬 찾기2 BFS 문제 : www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 분석 : 이 문제는 삼성 어쩌구 역량 기출 문제였다. 아직 기출 문제에 대한 감이 없다. 기업 코딩테스트는 다 기업 코딩테스트 같아서 말이다 하하 어쩼든 그래프 이론을 복습하는 와중에 한번 풀어볼까 ? 해서 도전하게 되었다. 문제를 읽다가 이해가 되면 문제 포기를 못하겠다. input 받는것만 만들고 다른 블로그님들의 글을 참고하여 겨우 겨우 풀었다. .. 2021. 4. 22.
[백준] 2583 영역 구하기 DFS 문제: www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 분석 : 전 2667(단지 번호 붙이기)번와 비슷한 문제이나 주어지는 입력값이 조금 다르다 ! 문제를 보면 왼쪽 아래 꼭짓점과 오른쪽 위 꼭짓점의 좌표가 주어지고 이에따라 가지는 값의 범위를 구해 사각형을 1로 초기화 시켜 주었다. 그러면 남은 map의 좌표는 0이 될꺼고 dfs를 돌며 맵의 크기를 구하되 dfs_all로 끊어져 있는 곳들에 대해 반복적으로 수행하면 된다! c++ 코드.. 2021. 4. 22.
[백준] 1697 숨바꼭질 BFS 문제 : www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 분석 : 풀지 못했던 문제를 풀었다 🤭 처음엔 재귀로 접근하다 가까운 거리먼저 탐색 해야 한다는 것을 깨달았다. 최단 거리를 찾는 bfs 문제이므로 queue를 사용했고 수빈이의 움직임 moving 배열에 넣은 뒤 visit에 움직인 거리만큼을 +1 해줘서 누적시켰다. 그리고 k에 도달했을 때 누적된 값을 출력시키면 끝!! c++ 코드 : // // 1697_hide_seek.. 2021. 4. 21.
그래프 이론 - DFS와 BFS 선형 구조가 아닌 비선형 구조 탐색 위해선 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)을 사용한다. 너비 우선 탐색은 브루트 포스와 관련이 깊고 깊이 우선 탐색은 백트래킹과 관련이 깊다. DFS 그래프의 모든 정점 방문 막힌 정점에 도달하지 않는 한 뒤로 돌아가지 않는다 즉 더 따라갈 간선이 없을 경우 이전으로 돌아간다. 이를 구현하기 위해 지금까지 거쳐 온 정점 모두 저장 해 둬야 하는데 재귀 호출 이용하면 이 같은 일을 간단하게 할 수 있다. 재귀 호출한 함수가 종료하면 호출한 위치로 다시 돌아가기 때문이다. DFS 특징 방문한 정점을 알아야 한다. 따라서 각 정점의 방문 여부를 저장하는 자료구조가 필요 더이상 방문할 정점이 없으면 이전 정점으로 돌아가야 한다 -> 재귀, stack 이용 그래.. 2021. 4. 21.
[백준] 9012 괄호 string 문제 : www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 분석: 유제를 본 적이 있어 어떻게 접근하면 효율적일까 고민하던 중 stack으로 푼 방식이 획기적이었다!! c++ 코드 : // // bracket.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 2021/04/21. // #include #include #include using namespace std; int N; bool isBr.. 2021. 4. 21.
[백준] 1110 더하기 사이클 string 문제 : www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 분석 : 도움 없이 풀 수 있는거 보니 내 수준은 브론즈인가보다 ... 앞으로 더 발전해야지 주어진 예시만으로 조건을 생각한다면 규칙을 발견해 풀수 있는 문제였다. 풀이 : // // 1110_addCycle.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 2021/04/21. // #include #include #include using namespa.. 2021. 4. 21.
[iOS] UIScene, UIWindowScene, UISceneSession SceneDelegate.swift class SceneDelegate: UIResponder, UIWindowSceneDelegate { ... } SceneDelegate가 상속받는 UIWindowSceneDelegate에 대해 자세히 살펴보고자 한다. 우선 기본적인 UI 구조는 이렇게 되어 있다고 한다. 그리고 더 자세히 살펴보면 ..! 이렇게 UIWindow와 UIScreen 사이에 무언가가 있다! 이에 대해 자세히 살펴보자 UIScene (뒤에 살펴볼 UIWindowScene과 UISceneSession이 UIScene을 상속받기 때문에 이부터 살펴볼 것이다.) 앱 ui의 하나 instance 또는 복사본을 의미한다 일반적으로 UIKit은 UIScene 객체 대신 UIWindowScene 객체를.. 2021. 4. 16.
[Swift] Closure에 대해 알아봅시다. 오늘은 그동안 많이 쓰였지만 그냥 지나친 closure에 대해 알아보고자 한다. 생략된 표현이 많아서 이게 함수인가? 하고 의문이 들때도 많고 swift/IOS 초보 일때는 많이 헷갈리는 개념인거 같다. 공식 문서(swift-closure)와 함께 정리하다보면 이제 유용하게 잘 쓰겠지 !! Closure란? 익명 함수 func으로 선언하는 것이 아닌 함수를 변수에 선언하는 형태 공식 문서에는 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있다. 라고 정의해두었다. 이에 대해 아래에서 자세하게 살펴보자 클로저가 가지는 형태는 다음과 같이 3가지다 전역 함수 : 이름 O, 캡쳐 X 중첩 함수 : 이름 O, 캡쳐 O 클로저 표현 : 이름 X, 경량화된 문법으로 관련된 문맥(Context.. 2021. 4. 16.
[iOS] Notification과 NotificationCenter NotificationCenter는 중앙집권적이다! 모든 뷰의 행동들을 감시하고 그에 해당하는 정보를 수신해 관리하는 곳이다. 여러 notification이 모여 있는데 각 viewController에 파견되어 감시하는 친구가 Observer이고 NotificationCenter에 Observer들이 등록되어 있다. Observer와 Notification Center 그리고 notification의 관계를 각자 이름의 뜻을 잘 생각해보며 이해해보자 Notification 등록된 모든 observers에 NotificationCenter를 통해 정보를 전달하기 위한 구조체 var name : Notification.name //알림 식별 태그 var object: 발송자가 옵저버에게 보내려고 하는 객체... 2021. 4. 16.
[Swift] Property - stored, computed, type / Observer swift 언어의 가장 기본적인 문법인 property에 대해 정리해보려고 합니다. 스위프트의 property는 아래와 같이 3가지로 구분할 수 있습니다. stored Property (저장 프로퍼티) computed property (연산 프로퍼티) type property (타입 프로퍼티) 기본 문서를 참고하여 정리하였습니다. https://docs.swift.org/swift-book/LanguageGuide/Properties.html Properties — The Swift Programming Language (Swift 5.7) Properties Properties associate values with a particular class, structure, or enumeration. S.. 2021. 4. 13.
[iOS] iOS13이후의 AppDelegate와 SceneDelegate iOS 12 이전의 appDelegate의 역할 1. 하나의 앱에 하나의 window가 존재! iOS 13 이후의 appDelegate와 scenceDelegate의 역할 1. window 개념이 scene으로 대체되고 하나의 앱에 여러 scene을 가질수 있게 되었다. 2. UILifecycle을 더이상 ApplDelegate에서 관리하지 않는다. 3. AppDelegate에 Session Lifecycle 역할이 추가되었다. Scene Session이 생성(created)되거나 삭제(discarded)될때 Appdelegate에 알리는 메소드(Scene Session)가 추가되었다. Scene Session은 앱에서 생성한 모든 scene의 정보를 관리한다. Scene이란? 기존의 window 개념에.. 2021. 4. 7.
[백준] 2309 일곱 난쟁이 backtracking 문제 : www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 분석 : 브론즈였음에도 어려웠다.. 앞으로 브루트 포스, 백트래킹쪽을 좀 더 공부해 보아야겠다. 종만북에서 보았던 아이디어를 가지고 문제 접근을 하였다. 각 난쟁이들은 100을 포함하는데 속하거나 안 속하거나 둘중 하나이다. 그러므로 모든 난쟁이들을 탐색하는데 return 문을 만나 재귀가 끝나게 되면 visit를 false로 해 속하지 않게끔 만들고 다른 원소들을 탐색하는 것이다. 이렇게 하여 속하는 원소들만.. 2021. 4. 6.
[백준] 1477 휴게소 세우기 문제 : www.acmicpc.net/problem/1477 1477번: 휴게소 세우기 첫째 줄에 현재 휴게소의 개수 N, 더 지으려고 하는 휴게소의 개수 M, 고속도로의 길이 L이 주어진다. N은 100보다 작거나 같으며, M도 100보다 작거나 같다. L은 100보다 크거나 같고, 1000보다 작거나 www.acmicpc.net 분석 : 풀땐 몰랐는데 예전 라우터 문제와 비슷한 방식의 문제다!! 생각한 틀린 방법 : for문을 한번씩 돌때마다 가장 간격이 큰 휴게소 지점을 반으로 나눠 그 지점에 휴게소를 세운다. // // 1477_rest.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 2021/04/05. // #include #include #include #i.. 2021. 4. 5.
HTTP 통신과 SOCKET 통신 - HTTP 통신 더보기 client가 요청 보내는 경우만 server가 응답하는 단방향 통신 단방향 통신, 즉 client -> server로만 요청 보낼 수 있다. server는 client에게 요청 보낼수 없다. 특징 1. 실시간 연결이 아니고 필요한 경우에만 서버로 요청 보내는 상황에 유용하다. 2. 요청을 보내고 server의 응답 기다리는 어플리케이션 개발에 주로 사용된다. - SOCKET 통신 더보기 client 와 server가 특정 port 로 실시간 양방향 통신하는 방식 서버-클라이언트 양쪽에 링크 생성하고 그 링크 통해 데이터를 주고 받는다. 서버쪽에서 임의의 포트 번호 설정해 놓고 클라이언트에서 해당 포트로 접속 시도하면 서버와 클라이언트가 그 포트번호로 서로 연결되어있는 상태가 되.. 2021. 4. 2.