
스토리 보드에서 Scroll View에 오토 레이아웃을 적용해보자! 우리가 일반적으로 Image View, Table View 등을 화면에 꽉 차게 표시하고 싶을 때 아래처럼 상하좌우에 0이라는 제약 사항을 걸어주고는 한다. 그러면 보통 View가 화면의 Safe Area 전체를 덮도록 설정되는데, Scroll View는 그렇게 호락호락하지 않다.🥲 공포의 빨간선이 나타나면서 'Scrollable Content Size Ambiguity' 라는 문구가 뜬다. 해석해보면 '스크롤 뷰가 애매모호한 스크롤 가능한 콘텐츠의 너비와 높이를 가지고 있다' 라는데, 그럼 어떻게 해야 할까? 콘텐츠의 너비와 높이가 애매모호하다고 했으니까 스크롤 뷰에게 스크롤 뷰가 표시할 콘텐츠의 명확한 너비와 높이를 제약 사항으로 주..
▼ 문제 링크 CountNonDivisible coding task - Learn to Code - Codility Calculate the number of elements of an array that are not divisors of each element. app.codility.com 역시나 정답은 맞췄지만, 시간 복잡도에서 실패한 케이스 기존 배열의 값을 새로운 배열의 index로 전환하고 해당 index의 값을 기존 배열의 값의 총 개수로 변환하는 게 풀이의 핵심이었다. 이게 무슨 말이나면 original[i] = k 이고 original배열에서 값 k가 배열 original 내에 전부 n개 있을 때 이 배열을 new배열에 위에서 언급한 방법대로 바꾸면 new[k] = n 이 된다. # 풀..
▼ 문제 링크 Remove All Adjacent Duplicates in String II - 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 비슷한 유형의 문제가 몇 번 있었는데 계속 틀리는 것 같다. 이번 문제는 보자마자 Stack을 바로 떠올렸어야 하는데 그러지 못하고 빙빙 돌아 비효율적인 방법으로 접근했다. 정답은 맞췄지만, 당연하게도 효율이 좋지 않았고, 결과적으로 아주아주 긴 문자열에서는 시간 초과가 떴다. 이 문제의 해답은 독특하게도 Stack뿐만 ..

▼ 문제 링크 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 1, 2 할 거 없이 처음부터 테스트 케이스를 전부 다 만족하지 못해서 결국 눈물을 꾹 참으면서 어린 시절 구몬 학습지 맨 뒷장 펼쳐서 답안지 베끼던 실력으로 구글링했다. 그치만 뭐... 다 이러면서 크는 거지 출처: https://leedakyeong.tistory.com/entry/프로그래머스-멀쩡한-사각형-in-python [슈퍼짱짱] # 풀이 최대공약수와 유클리드 호제법 import Foundation fun..
▼ 문제 링크 MaxDoubleSliceSum coding task - Learn to Code - Codility Find the maximal sum of any double slice. app.codility.com 문제를 간단하게 정리하면 다음과 같다. 변수 X, Y, Z의 범위: 0 ≤ X < Y < Z < N(배열의 개수) (X, Y, Z)를 이용한 배열의 더블 슬라이스의 합: A[X + 1] + A[X + 2] + ... + A[Y − 1] + A[Y + 1] + A[Y + 2] + ... + A[Z − 1] 일 때, 이 더블 슬라이스의 합이 가질 수 있는 모든 경우의 수 중 최대값을 구하라 # 풀이 1 변수가 3개니까 for문도 3개! import Foundation import Glibc..
▼ 문제 링크 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr # 풀이 1 내장 정렬 함수를 사용하지 않는 방법 시도 import Foundation func solution(_ numbers:[Int]) -> String { var nums = [[String]]() var result = "" // [Int] -> [String] for number in numbers { nums.append(String(number).map{String($..

▼ 문제 링크 StoneWall coding task - Learn to Code - Codility Cover "Manhattan skyline" using the minimum number of rectangles. app.codility.com 영어로 된 문제가 너무 난해해서 이해하기 너무 어려웠던 문제.(사실 아직도 문제는 무슨 소린지 모르겠음;;) 벽돌을 쌓네 마네 하는 것들은 일단 뒤로 재쳐두고, 주어진 배열만 보고 유추해서 풀었다. # 풀이 1 FIFO Queue를 이용한 풀이 import Foundation import Glibc public func solution(_ H : inout [Int]) -> Int { var count = 0 // use queue while !H.isEmp..
▼ 문제 링크 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr # 풀이 1 가장 첫 중복 요소를 확인하고 제거하는 함수 사용 import Foundation func solution(_ s: String) -> Int{ var chars = [Character]() var overlap = true s.forEach { // String을 [Character]로 변환 chars.append($0) } repeat { overlap = checkOverlap(chars).0 chars = check..