본문 바로가기

전체 글

[Python] LinkedList 예제 (Palindrome) 주어진 리스트가 팰린드롬인지 판별하는 프로그램을 작성하세요. 예시1) [1, 2, 2, 1] ⇒ True 예시2) [1, 2] ⇒ False test.python from structures import LinkedList l1 = LinkedList() for num in [1, 2, 2, 1]: l1.append(num) l2 = LinkedList() for num in [1, 2]: l2.append(num) assert isPalindrome(l1) assert not isPalindrome(l2) practice.python def isPalindrome(ln): arr = [] head = ln.head if not head: return True node = head while node: .. 더보기
[Python] Queue 예제 (Josephus) 1부터 N까지 차례대로 줄을 섰을 때, 맨 앞에 선 사람만 들여보내주고 그 다음 순서인 사람은 제일 뒤로 보내는 특이한 줄서기가 있습니다. 예를 들어, N=6인 경우, 123456 이 순서대로 줄을 서있을 것입니다. 이때 제일 먼저 1이 입장하고 남은 순서는 23456이 됩니다. 2는 두 번째 순서이므로 제일 뒤로 보내서 34562가 됩니다. 다시 3이 입장하여 4562가 되고, 4가 두 번째 순서이므로 5624가 됩니다. 5가 입장하고 246, 2가 입장하고 64, 6이 입장하여 4, 마지막으로 4가 입장하게 됩니다. N이 주어질 때 제일 마지막으로 입장하는 숫자를 계산하는 프로그램을 작성하세요. test.python assert test_problem_queue(2) == 2 assert test_p.. 더보기
[Python] Queue (FIFO) '큐'란 자료 구조는 "놀이기구"을 떠올리면 된다. 한 줄로 섰다가 한 줄로 나오는 놀이기구! (데이터를 한쪽 끝으로 넣고, 반대쪽에서 빠져 나온다) Swift 언어에서의 큐 의 예시도 함께 비교해 보자. Queue - 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형 구조 놀이기구 특징: First In First Out = FIFO 가장 처음에 줄을 선 사람이 가장 빨리 나온다. 가장 마지막에 선 사람은 가장 늦게 나온다. 먼저 해야 하는 일들을 저장하고 싶을 때나 먼저 들어온 일들을 순서대로 처리해야 할 때 큐를 사용한다. test.python def test_queue(): queue = Queue() queue.push(1) queue.push(2) queue.push(3) que.. 더보기
[Flutter] instance, extends Dart 문법 중, instance와 extends에 대해 간단히 정리해 봅니다. Instance (인스턴스) 클래스(빵틀) → 생성자 호출(빵을 만들기) → 인스턴스(빵) 빵 틀에서 빵을 찍어내 듯,생성자 함수를 호출하여 클래스에서 정의해 둔 속성과 메소드를 가진 데이터 객체를 만들 수 있는데,이를 인스턴스(Instance)라고 부른다. void main() { Bread bread = Bread(); // Bread 생성자를 호출하여 인스턴스를 반환 print(bread); // Instance of 'Bread'}class Bread { // 생성자 Bread();}   Extends (상속) extends 는 해당 클래스가 가진 변수와 함수를 물려받아 그대로 쓸 수 있다   10번째 라인과 같이.. 더보기
[Algorithm] 배열 두 배 만들기 (w/ Swift & Python) 배열 두 배 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr laguage = swift map으로 기존 데이터를 변형하지 않고 새로운 컨테이너를 만들어 아래와 같은 코드를 짤 수 있다. for - in 구문에 비해 코드가 훨씬 간결하고 컨파일러 최적화 성능이 좋다. func solution(_ numbers:[Int]) -> [Int] { return numbers.map(){$0 * 2} } 위의 코드를 for - in 구문으로 아래처럼 수정할 수 있다. func solution(_ numbers:[Int]) -> [Int] { var doubl.. 더보기
[Flutter] function & class 다트 함수와 클래스에 대해 간단히 정리해 봅니다. DartPad dartpad.dev function Dart 함수 void main() { print("1. 시작"); say(); print("4. 종료!"); } void say() { print("2. 안녕"); print("3. Hello"); } main은 Dart에서 처음 시작 시 호출하는 약속된 함수 앞의 void 자리는 함수가 반환하는 값의 자료형을 표시하는 것. 비워둬도 괜찮다. void main() {} main2 () {} String main3 () { return "Hello"; } 함수 표현 방법 첫 번째 줄에 있는 main도 함수. 단, Dart에서 시작할 때 호출하기로 약속된 함수로 이름을 변경하면 안된다. void main(.. 더보기
[Python] Array & LinkedList 연결리스트, 스택, 큐, 해시테이블, 힙 → 파이썬의 베이직 자료구조 5인방 자료구조는 알고리즘을 효율적으로 구현하기 위한 기초 체력이므로 제대로 공부해 봅니다. Array vs. Linked LIst Array : 파이썬의 리스트. 접근 쉬움, 삽입 어려움. (파이썬의 리스트) LinkedList (연결리스트) : 직접 구현. 접근 어려움, 삽입 쉬움. Array LinkedList 특정 원소 조회 O(1) O(N) 중간에 삽입 삭제 O(N) O(1) 데이터 추가 데이터 추가 시 공간이 다 차버렸다면 새로운 메모리 공간을 할당받아야 한다. 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가하면 된다. 정리 데이터에 접근하는 경우가 빈번하면 Array 사용 삽입과 삭제가 빈번하면 LinkedList를 사용 .. 더보기
[iOS] LifeCycle - App, ViewController, AppDelegate 2024년 3월 22일 금요일 생명주기(LifeCycle) 개념에 대해 정리해 봅니다. App LifeCycle NotRunning 앱이 실행되지 않는 상태. Inactive 앱이 실행 중인 상태 그러나 아무런 이벤트를 받지 않는 상태 (Foreground) Active 앱이 실행 중이며 이벤트가 발생한 상태 (Foreground) Background 앱이 백그라운드에 있는 상태. 그러나 실행되는 코드가 있는 상태  Suspend 앱이 백그라운드에 있고 실행되는 코드가 없는 상태 UIViewController LifeCycle 📌 init() UIViewController 객체가 생성 📌 loadView() 컨트롤러의 뷰 계층 구조가 생성 📌 viewDidLoad() 뷰 계층 구조가 메모리에 로드되었으.. 더보기