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

▼ 문제 링크 Codility Your browser is not supported You should use a supported browser. Read more app.codility.com # 풀이 1 내가 처음 푼 문제 풀이 func solution(_ A : inout [Int]) -> Int { var left = 0 var right = 0 var index = 0 var result = 0 for i in 1.. 0 index = i repeat { right += A[index] index += 1 } while index abs(left-right) ?..