본문 바로가기

분류 전체보기

(139)
Hashable 이란? - Swift Hasable 정수 해쉬값을 제공하는 Hasher로 해쉬 될 수 있는 타입. 해쉬란? 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. (위키백과) 이걸로 유추해보면 해시가 될 수 있다 라는 건 HashTable 에서 찾을 수 있다는 의미입니다. HashTable 에서 hash 값을 찾으려면 key가 필요하고 그 key는 식별할 수 있도록 unique 해야합니다. 음 그래서 Hashable을 채택하면 Set 나 Dictionary 타입의 Key 값이 될 수 있는 거군요. 위의 정의를 다시 설명해보자면 Hashable은 Hashtable의 Key 값이 될 수 있도록 해주는 프로토콜 입니다. 그 과정에서 Hasher가 사용됩니다. 원래는 해쉬함수를 이용해서 해..
[BFS] 음식물 피하기 - baekjoon Swift 문제 : 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 풀이방법 일단 주어진 input으로 맵을 만든다. 맵 전체를 돌면서 만약 map[row][col] == 1 인지 찾는다. 즉 음식물이 있는지 찾는다. 음식물이 있으면 BFS를 돌려서 상하좌우에 있는 음식물들을 찾아서 갯수를 알아낸다. 방문한 곳은 map[row][col] = 0 으로 바꿔준다. 즉 음식물을 치워준다. 코드 import Foundat..
[DFS] N과 M - baekjoon Swift 문제 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이방법 일단 이 코드의 순열과 조합을 만드는 이 메커니즘은 다음과 같습니다. [1,2,3] 배열에서 2개를 순서있게 뽑는 경우의 수를 예시로 들겠습니다. 답이 들어갈 수 있는 두자리를 준비합니다. [ , ] 첫번째 자리부터 보겠습니다. 첫번째 자리에 올 수 있는 가능성 있는 숫자는 1, 2, 3 입니다. 일단 첫번째 자리에 1을 고정 두번째 자리로 넘어갑니다. 이제 남은 숫자는 2, ..
[투포인터] Container With Most Water - LeetCode Swift 문제 : https://leetcode.com/problems/container-with-most-water/ Container With Most Water - 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 풀이방법 양쪽 끝에 포인터를 한개씩 둔다음에 모든 Area 중에 제일 큰 Area를 반환한다. 코드 class Solution { func maxArea(_ height: [Int]) -> Int { var startPoint = 0 var endPoint ..
Tuple이란? - Swift Swift의 타입 Tuple을 설명하기 전에 Swift의 타입들을 정리하고 넘어가는게 좋을 것 같아서 정리해 봤습니다. 스위프트의 타입에는 2가지 종류가 있습니다. Named Type과 Compound Type이 있고 Compound Type안에는 Function Type과 Tuple타입이 있습니다. Named Type : 클래스, 구조체, 열거형, 프로토콜, 기본데이터타입들 Compound Type Function Type : ex)let sum: (Int, Int) -> Int = { return $0 + $1 } Tuple Type Tuple 쉼표로 구분한 타입들을 괄호로 테두리 친 목록입니다. 튜플은 Compound Type(복합 종류) 이름에서 알 수 있다시피 여러가지 타입들을 괄호 안에 관련있..
[Stack] Validate Stack Sequences - LeetCode Swift 문제 : 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 이 문제는 풀이는 쉬운데 써진 내용이 이해가 안됬었다. 밑에 예시를 보면 순서대로 1 넣고 2 넣고 3 넣고 4넣고 5 넣는다. 꺼낼 수 있는 것은 가장 최근에 넣은 것 즉 스택의 마지막 부분만 꺼낼 수 있다. 그래서 1~4넣고 가장 최근인 4꺼내고 다시 5넣고 꺼내고 3,2,1 꺼내고 이런식이다. 뭐 5안넣고 꺼내는 것도 가능하다. 예를들면 popped가 [4,3,2,1,5] 이면 이것도 true인 것이다...
git push 에러 - Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 갑자기 git push가 안되.. 왜!!? git push 하려니까 잘 되던 아이가 갑자기 이런 에러를 뱉내요.. 응? 해석해보자면 대충 2021년 8월 13일 후로 password authentication을 위한 지원을 안한다. 대신 personal access token을 사용해라. 메시지 대로 함 해봅시다! 일단 command+스페이스바로 Spotlight 검색창에 keychain을 입력해서 키체인 접근에 들어가 줍니다. 오른쪽 위 검색창에 github라고 치면 항목들이 나옵니다. 파란색 항목을 더블클릭 해줍시다. 빨간색 부분에 github 비밀번호가 적혀있더군요. 아하 알겠다. 느낌왔음! 이곳에 personal access token을 적어주면 되겠군요! 그럼 일단 personal access ..
[Stack] 과제는 끝나지 않아! - Baekjoon 17952번 Swift 문제 : https://www.acmicpc.net/problem/17952 17952번: 과제는 끝나지 않아! 성애는 이번 학기에 전공을 정말 많이 듣는다. 이로 인해 거의 매일을 과제를 하면서 보내고 있다. 그런데도 과제가 줄어들 기미가 보이지 않는데, 바로 분단위로 과제가 추가되고 있기 때문이 www.acmicpc.net 풀이방법 입력받은 것 첫번째가 1일 때만 stack(점수, 시간초)에 넣는다. stack의 마지막 원소를 1초마다 시간초를 -1 빼준다 시간초가 0이되면 result에 해당 점수를 더해준다. 이 문제에서 골치아팠던게 Int($0)으로만 하면 시간초과가 난다. subString을 String으로 바꿔줘야 통과가 된다. 코드 // // main.swift // Assignment //..