본문 바로가기

학습 노트

(176)
99클럽 - 전력망을 둘로 나누기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 위 조건을 보고 빠르게 떠올릴 수 있는 것은 다음과 같다. 트리를 만들어야 한다. 매번 탐색하는 건 문제가 좀 있다. 트리가 있다면 각 노드의 서브트리를 계산해 두는 건 많은 경우에서 이득이다. 그리고 이 문제에서 서브트리를 계산해 두는 건 핵심이자 굉장히 많이 이득이다. 트리는 흔하지만 중요한 자료구조로 생성부터 탐색까지 자세히 정리해 본다..
99클럽 - 연속된 부분 수열의 합 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 가장 처음 생각해 볼 수 있는 방법은 무빙 윈도우로 다음과 같다. head를 0, tail을 1로 초기화한다. head ~ tail의 합이 k보다 작으면 tail을 1 증가 시킨다. head ~ tail의 합이 k보다 크면 head를 1 증가 시킨다. head ~ tail의 합이 k와 같으면 이 둘을 저장하고 head를 1 증가 시킨다. head와 tail이 같으면 tail을 1 증가 시킨다. 저장된 head와 tail 쌍중 tail - head의 값이 작은 순으로 정렬한다. 정렬된 쌍들 중 tail..
99클럽 - 신고 결과 받기, 개인정보 수집 유효기간 신고 결과받기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 이전에 풀어봤던 문제다. 당시엔 각각 딕셔너리로 만들어 이 둘을 연결 지어 풀었던 것 같은데 아마 관계형 데이터베이스를 생각했던 것 같다. 알다시피 관계형 데이터베이스는 관리가 쉬운 거지 그리 효율적인 데이터 베이스는 아니기도 하고, 이번에는 데이터 처리 과정에서 예외처리로 의미 없는 연산의 수를 줄이는 방법을 선택했다. 유의해서 봐야 할 조건은 다음과 같다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. 자기 자신을 신고하는 경우는 없습니..
99클럽 - JadenCase 문자열 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 Python의 문자열은 배열과 비슷하면서도 많이 다르다. 때문에 접근방법은 비슷하면서도 호환이 안 되는 경우가 많기 때문에 우회해서 푸는 잔머리가 중요하다. 유의할 점은 문제 조건의 "공백문자가 연속해서 나올 수 있습니다." 부분이다. 이 조건 때문에 rstrip이나 lstrip을 쓸 수도, 맘 편히 뗐다 붙였다도 할 수 없다. 단어의 위치는 find 메서드로 찾고, 데이터 조작 범위는 무빙 윈도우와 비슷하게 구현했다. 풀이 def solution(s): answer = "" for word in s..
99클럽 - 모음사전 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 5개의 모음을 5개의 자리에 중복을 허용하여 놓았을 때 제시되는 단어가 몇 번째로 오는지를 반환하는 문제이다. 그렇다. 중복순열이다. 수학에 젬병이라 수학 문제를 그리 좋아하지는 않는데 내가 풀 수 있다면 이야기가 달라지지. 😁 풀이 def solution(word): answer = 0 data = ["A", "E", "I", "O", "U"] for idx in range(len(word)): answer += (data.index(word[idx])) * (5 ** (5 - idx) - 1) /..
99클럽 - 기능개발, 대충 만든 자판 기능개발 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 풀이 초반에는 남은 일수의 규칙성을 가지고 풀이를 시도했었다. 제시된 보기와 간단한 데이터 조작으로 규칙성이 보였기 때문인데 코테는 항상 보기만 만족해서는 답이 없다. 이후에는 예전에 풀었던 SK의 문제 중 하나인 트랙데이 문제가 생각이 나서 데이터를 과감히 음수로 보내버려 기한이 얼마나 지났는지를 하나씩 체크하는 것으로 전략을 바꿨다. 이를테면 위와 같은 방식이다. 어차피 앞의 작업이 완료되지 못하면 뒤의 작업을 먼저 내보낼 수 없으므로 가장 앞의 작업이 0 이하로 변하는 순간에 뒤완료된 ..
99클럽 - 이진 변환 반복하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 프로젝트들을 진행하면서 생긴 변화는 '내장함수'의 활용이다. 직접 구현하는 것보다 덜 수고스럽고, 실제 구동 속도도 빠르다는 것이 장점이다. (아는 것이 힘이라는 거지...) 2진수와 10진수 간의 변환에는 다음의 내장 함수를 사용하면 간단하다. bin() Built-in Functions The Python interpreter has a number of functions and types built into it that are always available. They are listed her..
ParallaxEffect 구조 구조는 단순하다. ScrollView 내에 상단에 이미지를 표시할 여백과 내용을 표시할 VStack 등의 View가 존재한다. 구현 ContentList struct ContentList: View { var body: some View { VStack(alignment: .leading) { ForEach(0.. 0 Spacer() .frame(height: isScrolled ? 400 + offsetY : 400) .background { Image("sample") .resizable() .scaledToFill() .offset(y: isScrolled ? -offsetY : 0) .blur(radius: isScrolled ? offsetY / 20 : 0) } } .frame(heigh..
AutoScrolling #06 지금 상태로도 매우 좋지만 밝은 사진과 어두운 사진일 때 Indicator가 다소 단조로워 보이는 것이 아쉽다. 이미지의 평균 색상을 추출하기 iOS나 Mac OS의 현행 디자인 코드는 Flat으로 음영과 그림자 등의 그래픽 적인 요소들을 최대한 배제하고, 색과 선, 레이어의 적층으로 깊이와 구분감을 부여하는 것이 특징이다. 개인적으로 이러한 chillog.page 표시되는 이미지의 평균 적인 색상을 추출할 수 있는 방법이 존재하는데, 이미 작성한 포스팅을 기반으로 적용해 조금 더 자연스럽게 만들어 보자. AverageColorModifier.swift // // AverageColorModifier.swift // AutoScrolling // // Created by Martin.Q on 2023/0..
이미지의 평균 색상을 추출하기 iOS나 Mac OS의 현행 디자인 코드는 Flat으로 음영과 그림자 등의 그래픽 적인 요소들을 최대한 배제하고, 색과 선, 레이어의 적층으로 깊이와 구분감을 부여하는 것이 특징이다. 개인적으로 이러한 상황에서 현재 시각적으로 가장 미려하다고 생각되는 부분은 바로 Material이다. SwiftUI에서 Blur를 사용하는 4가지 방법 Blur Apple Developer Documentation developer.apple.com struct ContentView: View { var body: some View { ZStack() { Image("bg.sample") .resizable() .ignoresSafeArea() .scaledToFill() .blur(radius: 20) Text("Blur..