while let input = readLine()을 생각하는게 어려웠다. 이건 시행착오였는데, 옵셔널 체이닝을 해줘서 아무 것도 들어오지 않았을 때에는 런타임 에러가 발생했다. 이를 해결하기 위해 guard let을 사용해서 이런 식으로 해결할 수 있었다.
Today 12/19완전탐색 말고 다른 방법이 있을까 고민하다가 방법이 없을 것 같아서 4중 for문으로 풀어봤다.근데 다른 방법이 없는 것 같기도 하다.. Idea & Solvingrow+col%2가 0인 곳을 W라고 그냥 가정을 해버리고, 그렇게 되면, row+c
Today 12/22제곱을 구할 때는 pow(value, Int), 제곱근을 구할 때는 sqrt(value)를 사용하면 된다. 어제 배웠던 부분을 활용해서 if로 끝을 걸러주는 것이 아닌 while 차원에서 걸러서 더 가독성이 좋도록 만들어보았다.같은 카드를 중복하여
Today 12/23이분탐색으로 풀 수 있는 문제이다. 이분탐색을 이용한다는 점을 처음에 찾지 못해서 구글링의 도움을 받았다.그 다음부터는 그냥 구현하면 되는 부분이라서 쉬웠고, 알던 사실들도 다시 한 번 정리했다.while min <= max로 while문을 돌
Today 12/24스택을 이용한 문제여서 배열을 통해 스택을 구현했다.처음에는 input, stack, output이렇게 세 개의 배열로 구성했는데, 생각해보니 input의 경우에는 1부터 차례대로 들어가니까 그냥 int로 생성하고 ++해도 될 것 같아서 int로 대
Today 12/28처음에는 규칙을 생각해서 풀려다가 그냥 queue를 구현해서 풀었다. 2차원 배열을 이용했고, 튜플을 이용해서도 풀 수 있을 것 같았다. inputNum 배열을 사용하지 않고, 이런 식으로 작을 때 계속 빼줘도 된다고 한다.
Today 12/27처음에는 .contains()를 써서 쉽게 가려했지만 아니나 다를까 시간초과가 되었다.이전에 썻었던 이진 탐색을 써서 문제를 해결했다.input을 받는 과정에서 시간이 많이 걸리는 것 같아, 그리고 다른 분들의 답안을 보았을 때, 라이노님의 File
Today 12/29FIFO의 Queue문제이다. 시간을 빠르게 하기 위해 버리는 카드를 직접 버리지 않고, index만 옮겨서 풀었다.
Today 12/29구현보다도 최솟값 설정과 예외처리가 더 어려웠다. 아무리 작아져도 자릿수 9를 뺀 수보다는 커야되겠다고 생각하고 \`input-(9inputDigit)\`를 최솟값으로 설정했다. 또한 여기서 자릿수 \* 9를 뺀 수가 음수가 되는 것을 방지하기 위
Today 12/29최대공약수 찾는 법을 몰라서 stride()로 뒤에서부터 하나씩 돌려봤다. 다행히도 최소공배수는 최대공약수를 통해 구했는데, 이상한 것 같아서 수정.GCF로 두 번 나누고 한 번 곱할꺼면 애초에 한 번 나누는게 ... 바본가또한 유클리드 호재법을 배
Today 1/5스택을 사용하면 쉽게 풀 수 있는 문제이다.앞의 문제와 거의 똑같은 문제이지만. 더 빨리 풀어보고 싶어서 서칭을 좀 했는데, 아예 stack을 안쓰고 Int값으로 풀 수도 있을 것 같았다.가장 큰 수를 max로 잡아서 보다 아래 있는 것들을 세야 하나
Today 1/7배열에 저장하고 몇 개 있는지 하나씩 세면 분명히 시간초과가 날 것 같아서 Dictionary 타입으로 저장을 하고, 같은 key가 나올 때마다 value를 하나씩 +하는 방법으로 풀었다. 조금 더 개선해보기로 했다. stack.last가 있는지 검사하
Today 1/14스크린샷 2022-01-08 오후 2.48.06.png이를 만족시키는 이항 계수를 구하는 문제이다. 0이 될 경우는 문제에서 이미 범위를 두어 생각할 필요가 없으므로, 팩토리얼 부분만 구현하면 된다.재귀함수로 구하니 간단한데도 시간이 많
Today 1/15인접한 배추를 탐색해야하는 DFS,BFS 문제이다. 어떤 방식으로 하던 상관은 없을 것 같아서 DFS 재귀를 한 번도 사용을 안해본 것 같아서 재귀를 사용해서 풀어보기로 했다.다른 해답들을 보니 dx,dy로 상하좌우 경우의 수를 배열로 설정하고, 반복
Today 1/16어떤 유형인지 파악이 오래 걸렸다. 계속 생각하다가, 이것도 재귀함수로 풀 수 있지 않을까 하는 생각이 들었다.그러고 4사분면으로 나눠서 각 사분면의 시작 숫자의 규칙이 있나 살펴보았다. 각 사분면은 4^N-1 \* (사분면의 숫자-1)로 시작하는 규
Today 3/31 Heap [자료구조] 그림으로 쉽게 보는 힙(Heap) 개념과 코드 힙은 일종의 트리로 수의 집합에서 가장 작은 수나 가장 큰 수만을 꺼내올 때 유용한 자료구조이다. 완전이진트리를 베이스로 구성된다. 배열로 구현될 수 있는데, 자식은 {자신
Today 4/7계산 속도가 빠르기 때문에 실용적이다.항상 최적의 결과를 도출하는 것은 아니다.탐욕 알고리즘이 성립하려면 두 가지 조건이 성립하여야 한다.탐욕스런 선택 조건(Greedy choice property) - 앞의 선택이 뒤의 선택에 영향을 주지 않는다.부분
Today 8/8queue를 사용하는 FIFO형식의 탐색방법이다.count라는 이중배열을 하나 더 만들어서 더 빠르게 걸린 시간을 기록하는 방법을 배웠다.Array()를 통해 String을 하나씩 쪼개서 배열로 만들어주는 것을 배웠다.(-1, 0),(1, 0),(0,
Today 8/10queue를 사용하는 FIFO형식의 탐색방법이다.
Today 8/15queue를 사용하는 FIFO형식의 탐색방법이다.Int형에 joineded()는 사용이 되지 않는다는 것을 배웠다.
Today 8/15queue를 사용하는 FIFO형식의 탐색방법이다.저번에 DFS로 풀었었는데 BFS로 새로 풀었다.
Today 8/16queue를 사용하는 FIFO형식의 탐색방법이다.저번에 풀었던 문제인데 다시 개념을 잡고싶어서 다시 풀어봤다.처음에는 이게 왜 BFS인지 몰랐는데 3가지 경우의 수로 뻗어나가고, 그 중에서 최소 경로를 구하는 것이라 생각하니 왜 BFS인지 알았다.이렇
Today 8/16queue를 사용하는 FIFO형식의 탐색방법이다.removeFirst()하면 시간초과가 나서 index를 사용해야했다.enumerated()를 통해 box배열을 만들면서 같이 queue를 뽑았고, 옵셔널 바인딩을 통해 max값을 찾아냈다. 조건도 함께
Today 8/17queue를 사용하는 FIFO형식의 탐색방법이다.특별한 어려움 없이 풀었다.
Today 8/23queue를 사용하는 FIFO형식의 탐색방법이다.말 그대로 전체탐색, 모든 경우의 수를 순회하여 정답을 찾는 탐색방법이다.알고리즘 기법\[전체 탐색] - 브루트 포스(brute force)설마 하나하나씩 벽(1)을 쌓는게 정답일까 하는 생각에 0,1,
Today 8/30최단경로를 풀다가 힙을 먼저 알고 가야겠다 싶어서 heap을 공부했다.heap은 우선순위 queue를 구현하는 한 가지 방법이다. (하지만 시간복잡도가 가장 빨라서 heap = priority queue라고 봐도 될듯)heap은 배열로 구성되고, 배열
기본적인 Algorithm 입력값을 받는 작업중에 Cannot convert value of type 'String.Element' (aka 'Character') to expected argument type 'String’ 오류가 떴다. 사실 String()으로
우선순위 큐(Priority Queue)우선순위 큐는 힙(heap)을 이용해 가장 높은 우선순위의 요소를 가장 처음에 위치시키는 큐(queue)이다.→ 그렇다면 힙(heap)이란 무엇일까힙은 완전이진트리를 사용해서, 데이터들을 반정렬 상태로 유지하는 자료구조이다.(배열
2212 센서2212번: 센서풀이는 간단한다.입력을 받고, 입력받은 센서를 오름차순(거리순)으로 정렬한다.각 센서들간의 거리의 차이를 담은 배열을 만들고, 오름차순으로 정렬한 다음, 처음부터, N-K번 index 전까지의 합을 출력하면 된다. (집중국의 수가 K개이므로
Swift를 통해서 PS를 한 지도 오래 된 것 같다. 항상 할 때마다 heap, deck등 직접 구현해주어야 하는 부분이 많아서 힘들 때도 있지만, 괜찮.. 지 않고(??) 가장 힘든 부분은 입출력 시간초과가 날 때이다.분명 시간복잡도도 똑같고 C++, Python이