[리트코드] Max Consecutive Ones III - Sliding Window 기법
Algorithm 2021. 9. 4. 17:00

▼ 문제 링크 Max Consecutive Ones III - 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 0과 1로만 이루어진 배열과 숫자 k가 주어진다. 이때, k개 만큼 0을 1로 바꿀 수 있다. k는 0부터 배열의 개수까지 모두 가능하며, 0을 k개만큼 1로 바꿨을 때, 가장 긴 연속된 1의 개수를 구해야 한다. Binary Tree를 사용한 사람도 있지만, 우리는 훨씬 쉽게 "Sliding Window" 기법을 사용해 답을 구할 수 있음 "Slidin..

[프로그래머스] 조이스틱 - 탐욕법(Greedy)
Algorithm 2021. 8. 27. 21:45

▼ 문제 링크 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 그 옛날 오락실 게임기에서 랭킹에 올라갈 만큼(보통 10~20등 내외) 기록을 세우면 닉네임을 입력하라는 화면이 뜬다. A부터 Z까지, 보통 3자리, 종종 4자리 닉네임을 입력할 수 있곤 했다. 조이스틱을 위로 올리면 A -> B로, 반대로 아래로 내리면 B -> A로 이동한다. 좌우로 이동해서 닉네임 자리를 옮길 수 있다. 즉, 이 문제는 이 오락실 게임기로 주어진 닉네임을 입력할 때 움직여야 할 최소 횟수를 구하는 문제다. ..

[iOS] Scroll View의 오토 레이아웃이 동작하지 않을 때 in storyboard
iOS 2021. 8. 12. 19:00

스토리 보드에서 Scroll View에 오토 레이아웃을 적용해보자! 우리가 일반적으로 Image View, Table View 등을 화면에 꽉 차게 표시하고 싶을 때 아래처럼 상하좌우에 0이라는 제약 사항을 걸어주고는 한다. 그러면 보통 View가 화면의 Safe Area 전체를 덮도록 설정되는데, Scroll View는 그렇게 호락호락하지 않다.🥲 공포의 빨간선이 나타나면서 'Scrollable Content Size Ambiguity' 라는 문구가 뜬다. 해석해보면 '스크롤 뷰가 애매모호한 스크롤 가능한 콘텐츠의 너비와 높이를 가지고 있다' 라는데, 그럼 어떻게 해야 할까? 콘텐츠의 너비와 높이가 애매모호하다고 했으니까 스크롤 뷰에게 스크롤 뷰가 표시할 콘텐츠의 명확한 너비와 높이를 제약 사항으로 주..

[코딜리티] CountNonDivisible
Algorithm 2021. 8. 12. 11:20

▼ 문제 링크 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
Algorithm 2021. 8. 7. 23:00

▼ 문제 링크 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뿐만 ..

[프로그래머스] 멀쩡한 사각형 - 최대공약수 구하기
Algorithm 2021. 7. 27. 16:00

▼ 문제 링크 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 1, 2 할 거 없이 처음부터 테스트 케이스를 전부 다 만족하지 못해서 결국 눈물을 꾹 참으면서 어린 시절 구몬 학습지 맨 뒷장 펼쳐서 답안지 베끼던 실력으로 구글링했다. 그치만 뭐... 다 이러면서 크는 거지 출처: https://leedakyeong.tistory.com/entry/프로그래머스-멀쩡한-사각형-in-python [슈퍼짱짱] # 풀이 최대공약수와 유클리드 호제법 import Foundation fun..

[코딜리티] MaxDoubleSliceSum
Algorithm 2021. 7. 23. 14:20

▼ 문제 링크 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..

[프로그래머스] 정렬 - 가장 큰 수
Algorithm 2021. 7. 11. 17:45

▼ 문제 링크 코딩테스트 연습 - 가장 큰 수 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($..