본문 바로가기

전체 글

[Python] Tree 트리는 이름처럼 계층형 구조로 위 아래가 구분되어 있습니다. 앞서 공부한 큐(Queue), 스택(Stack) 은 자료구조에서 선형 구조라고 하는데, 선형 구조란 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태를 의미합니다. 이와 달리 트리는 비선형 구조입니다. 비선형 구조는 데이터가 계층적 혹은 망으로 구성되어 있는데, 선형구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고, 비선형구조는 표현에 초점이 맞춰져 있습니다. Tree 에서 알아둘 용어 Node: 트리에서 데이터를 저장하는 기본 요소 Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 레벨에 연.. 더보기
[Algorithm] ad 제거하기 (w/ Swift & Python) ad 제거하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr laguage = swift ▽ // 문자열 배열을 받아, "ad"를 포함하지 않는 문자열만 필터링하여 반환 func solution(_ strArr:[String]) -> [String] { // filter 함수를 사용하여, 배열 내 각 문자열에 대해 조건을 검사 return strArr.filter { !$0.contains("ad") } // !$0.contains("ad") 조건은, 문자열이 "ad"를 포함하지 않는 경우이므로 "ad"를 포함하지 않는 문자열만 필터링하여 새로운 배열로 .. 더보기
[Swift] ARC (Automatic Reference Counting) 프로그램이 운영체제로부터 할당받는 메모리 공간 구조에 대해 공부하고, 이를 토대로 Swift의 ARC개념을 이해하여 봅니다. 메모리 구조 Swift는 ARC를 사용하여 Heap 영역의 객체 메모리를 자동으로 관리한다. 자세히 풀어 말하자면, >> Heap 영역의 객체에 대한 Strong Reference(강한 참조) count를 추적하고, 객체가 더 이상 필요하지 않을 때 (참조 count가 없을 때) 해당 객체에 대한 메모리를 자동으로 해제하는 방식으로 메모리를 관리한다. 📌 Strong Reference (강한 참조) ▽ 기본적으로 Swift에서 변수나 상수는 Strong Reference(강한 참조)를 한다. 객체에 대한 Strong Reference(강한 참조) count가 증가되어 있다면, 해당.. 더보기
[iOS] JSON (JavaScript Object Notation) 2024년 4월 9일 화요일 왠지 무조건 잘 알아두어야 할 것 같은 제이슨.. (윌슨 친구 제이슨.. ?) 내 귀에 자꾸만 들려오는 이 녀석을 훓어봅니다. Json 한 줄 표현 원래 자바스크립트 언어에서 객체 속성을 표현하기 위한 방법으로 사용하기 시작한 데이터 구조 간결하고 쉽게 데이터를 나타내는 방법 중 하나 "Key" : Value 로 이루어진 데이터들의 집합 (--> Json 객체) Swift의 Dictionary 성격을 가지고 있기에 Dictionary 계열의 자료형을 사용한다. Dictionary는 배열과는 다르게 index 없이 key에 해당하는 value를 매칭하면 된다. 따라서 순서는 상관이 없다. 그러나 key 타입은 무조건 문자열(string)만 가능하고, value 타입은 문자열, .. 더보기
[Algorithm] 콜라 문제 (w/ Swift) 콜라 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr func solution(_ a:Int, _ b:Int, _ n:Int) -> Int { //a개를 가져다 주면 b병을 준다. n개 가져다주면 몇병을 받을 수 있나 //현재 병 수 = n개 var cokeNumber = n var receivedCokeNumber = 0 // a보다 가지고 있는 콜라의 수가 크거나 같을 때까지 반복 while cokeNumber >= a { receivedCokeNumber += cokeNumber / a * b cokeNumber = (cokeNumber / a .. 더보기
[iOS] 키오스크 상단 카테고리 영역 만들기 2024년 4월 8일 월요일 지난 주 만들었던 키오스크 화면 상단 카테고리 영역에 대해 기록 겸 정리합니다. 내가 구현한 키오스크 사용자가 제품을 선택하는 과정은 크게 아래의 두 단계로 나눌 수 있다: 1) 최상단의 카테고리 선택과 2) 그에 따른 제품군 선택 (제품군을 클릭하면 아래에 제품 이미지와 가격 정보가 펼쳐진다.) 최상단은 Button + Label로, 그 밑의 제품군은 Label로 만들었는데 stack으로 만들거나 아예 처음부터 코드로 짜는 편이 낫다는 조언들도 주셔서(이어지는 뒤의 작업들을 고려할 때) 초기 진행부터 선택의 어려움이 있었지만, 한 개의 ViewController에서 나를 포함한 세 명이 함께 코드를 짜고 있었기에 코드의 conflict를 최소화하기 위해 storyboard를.. 더보기
[Algorithm] 부족한 금액 계산하기 (w/ Swift) 부족한 금액 계산하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 총 이용한 금액을 구해주고, 가지고 있는 금액보다 총 이용한 금액이 큰 경우 그 차액을 반환하고 그 외의 경우에는 0을 반환해 주면 된다. func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{ var answer:Int64 = -1 var sum = 0 // 놀이기구를 탄 횟수만큼 반복하면서 금액을 더해준다 (내야하는 총 금액 : sum) for ride in 1...count { sum += ride * price } // su.. 더보기
[Algorithm] 내 마음대로 정렬하기 (w/ Swift) 내 마음대로 정렬하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr '인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.' 라는 문제 핵심을 잘 이해해야만 풀 수 있는 문제다. 은근히 문제 자체를 이해하기가 어렵다.. #1. 문자열 배열을 문자 단위로 분리하고 다시 배열로 변환: var strings = strings.map { $0.map { String($0) } } 우선, 입력으로 받은 문자열 배열 strings의 각문자열을문자단위로분리한다. 내부의 .map { String($0) }은 각 문자를 다시 문자.. 더보기