본문 바로가기

전체 글

[Algorithm] 무작위로 K개의 수 뽑기 (w/ Swift & Python) 배열에서 중복되지 않는 요소를 최대 k개까지 추출하는 코드를 짜는 문제로, 추출된 요소의 개수가 k보다 적다면, 남은 공간을 -1로 채우면 된다. 무작위로 K개의 수 뽑기 (shortcuts) language = swift func solution(_ arr:[Int], _ k:Int) -> [Int] { var yeon: [Int] = [] for i in arr{ if yeon.count < k { if yeon.contains(i) == false { yeon.append(i) } } } if yeon.count < k { (yeon.count...(k-1)).forEach{ _ in yeon.append(-1) } } return yeon } 예를 들어, arr 배열이 [1, 2, 3, 2, 4,.. 더보기
[Flutter] Widget, Android Material, iOS Cupertino 위젯이 무엇인지, 플러터에서 사용하는 위젯의 종류는 무엇인지 알아봅니다. 위젯(Widget): Flutter는 모든 것이 위젯(Widget)으로 만들어져 있는데, 이는 레고 블럭과 같이 앱을 만드는데 사용되는 작은 모듈로 이 위젯들을 조합해서 화면을 그린다. 조합이 나무와 같이 생겼다하여 위젯 트리(Widget Tree)라고 한다. 출처 : pixabay Android Material & iOS Cupertino : 특정 플랫폼에 종속되지 않은 고유의 디자인을 입힌 커스텀 위젯(Custom Widget)도 쉽게 만들 수 있다. → Flutter 위젯 카탈로그 머터리얼 위젯(Material Widget) : Android에서 사용되는 기본 화면 구성 요소를 Flutter에서 재현한 위젯 쿠퍼티노 위젯(Cu.. 더보기
[Swift] Closure, Higher Order Function 2024년 3월 16일 토요일 익명 함수 closurer와, 다른 함수를 인자로 받거나, 함수의 결과로 함수를 반환하는 고차함수(map, filter, reduce)를 공부해 봅니다. #1. Closure #2. Higher Order Function (고차함수) #1. Closure 이름없는 함수 즉, 코드 블록을 말한다. ('closure'라는 단어가 참 잘 어울린다.. ) 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다 주변 환경에 있는 변수나 상수를 캡처하여 저장하고, 이를 나중에 사용할 수 있도록 하는데 이것은 클로저가 생성될 때 클로저가 참조하는 변수 또는 상수의 값에 대한 복사본을 유지하고 저장하는 메커니즘이다. 값(value) 캡처: 클로저가 변수나 상수의 값을 캡처한다... 더보기
[Algorithm] 각도기 (w/ Swift & Python) 평각일 때 4, 둔각일 때 3, 직각일 때 2, 예각일 때 1을 구하는 코드를 짜는 문제로, if 조건문을 사용할 때 swift 언어에서는 else if, python 언어는 elif 라고 표현하는 점을 유의해야 한다. 각도기 (shortcuts) languate = swift func solution(_ angle:Int) -> Int { if angle == 180 { return 4 } else if angle > 90 { return 3 } else if angle == 90 { return 2 } else { return 1 } return 0 } 마지막 줄에 있는 return 0은 실행될 일이 없으므로 제거해도 될 것은데 넣어봤다. 함수의 반환값은 이미 위의 조건문 중 하나에 해당하기 때문에 .. 더보기
[Python] Stack 예제 여는 괄호와 닫는 괄호가 쌍을 이루는지를 확인하는 코드를 짜기 위해 스택 자료구조를 사용해 봅니다. '(', ')', '{', '}', '[' 및 ']' 만 포함된 문자열이 주어졌을 때 입력 문자열이 유효한지 확인하는 프로그램을 작성하세요. assert test_problem_stack("()") assert test_problem_stack("()[]{}") assert test_problem_stack("({[][]})") assert test_problem_stack("({[]})") assert not test_problem_stack("(]") assert not test_problem_stack("(()]") assert not test_problem_stack("(((])") assert n.. 더보기
[Swift] Escaping closure 2024년 3월 15일 금요일 탈출 클로저(Escaping closure)를 활용해 보자. ※ 참고 : Closure ☑️ Escaping Closure 어떤 경우에 사용되는가? 1. 어떤 함수의 내부에 존재하는 클로저(함수)를 외부 변수에 저장하는 경우 2. 클로저가 메서드의 인자로 전달됐을 때, 메서드의 실행이 종료된 후 실행되는 클로저 (비동기) → 파라미터 타입 앞에 @escaping이라는 키워드를 명시해야 한다. 예) 비동기로 실행되거나 completionHandler로 사용된 클로저의 경우 클로저를 메서드의 파라미터로 넣을 수 있다. // 1) 외부 변수 저장 var defaultFunction: () -> () = { print("출력") } func escapingFunc(closure: .. 더보기
[Swift] 짝수의 합 (w/ Swift & Python) 언듯 굉장히 쉬운 문제라고 생각했는데 의외로 오래 고민했다.짝수를 만드는 반복문을 돌린 후 그 값들의 합을 구하는 방식으로 풀었는데 짝수를 만들기 위한 변수와 합을 구하는 변수를 따로 설정한다는 생각을 하지 못해 고민했다. 결과값을 만드는 변수를 어떻게 설정하고 시작하느냐는 언제나 문제의 핵심같다. + 코테를 풀때 answer로 리턴하는 변수, 특히 0으로 초기화하는 변수의 이름은 yeon으로 설정하기로 했다. 나만의 쓸데없는 시그니처? 짝수의 합 (shortcuts) language = swift import Foundation func solution(_ n:Int) -> Int { var i = 1 var yeon = 0 for i in 1...n { if i % 2 == 0 { yeon += i .. 더보기
[Swift] Thread, Asynchronous & Networking 2024년 3월 14일 화이트데이 스레드와 비동기에 대해 알아보고 비동기를 활용하여 서버로부터 데이터를 받아오는 네트워킹에 대해 공부합니다. ☑️ Thread 스레드(Thread)는 컴퓨터 프로세스 내에서 실행되는 실행 흐름의 단위. 프로세스는 운영체제로부터 자원을 할당받아 실행 중인 프로그램의 인스턴스를 나타내는데, 각 프로세스는 하나 이상의 스레드를 가질 수 있다. Swift에서의 스레드 종류 메인 스레드(Main Thread) - App의 주요 인터페이스 및 UI 업데이트를 담당하는 스레드. UI 요소의 변경은 메인 스레드에서 수행 백그라운드 스레드(Background Threads) - 메인 스레드 이외에 동시에 작업을 수행하기 위해 생성되는 스레드들을 일컫는다. 주로 작업을 분산하거나 병렬로 처.. 더보기