전체 글
[2일째] 디자인 패턴
디자인 패턴은 무엇인가? 우리가 프로그램을 만들때 무작정 만들지는 않는다. 말 그대로 프로그램을 어떻게 효율적으로 만들지 설계하는 것이다. 설계 방법에는 여러가지가 있는데 기본적인것과 주된 내용을 소개한다. 먼저 디자인 패턴에는 - 창조적 - 구조적 - 행동 기타 등등 패턴들이 존재한다.이중 가장 널리 사용되는 생성 패턴중 하나는 싱글톤 패턴이다. 이 패턴을 사용하면 클래스에 인스턴스가 하나만 있는지 확인하는 동시에 해당 인스턴스에 글로벌 접근 지점을 제공할 수있다. 싱글턴 패턴은 구성 관리자, 로깅 기능 또는 데이터베이스 연결과 같은 단일 공유 리소스가 필요할 때 유용하다. 대부분의 프로그래밍 언어에서 싱글턴 클래스를 만들려면 생성자를 비공개로 설정하고 싱글턴 인스턴스를 반환하는 정적 메서드를 제공해야..
[1일] 데이터 구조.
이해를 돕기 위한 사진자료는 잘 넣지 않을 예정이다. 넣으면 물론 좋긴 하겠지만 찾는데 시간이 많이 걸리고 포스팅에 비효율적이다. 그래서 최대한 담백하게 쓸 예정이다. 데이터 구조는 일단 컴퓨터의 메모리에 데이터를 구성하고 저장하는 방법을 말한다. 데이터에 대한 효율적인 접근과 수정이 가능하도록 설계되었고 이는 데이터 삽입, 삭제 및 검색과 같은 다양한 작업을 지원하는데 사용한다. 아래는 익히 우리가 항상 배웠던 내용들이다. 1. 배열 배열은 동일한 유형의 고정된 수의 요소를 저장하는 연속된 메모리 블록이다. 배열은 데이터를 순차적으로 저장하고 접근하는데 유용하나 배열의 모든 후속 요소를 이동해야하기 때문에 요소를 삽입하거나 삭제하는데는 효율적이지 않다. (이 내용은 링크드 리스트를 배울때 자세하게 할 ..
[swift] Linked List 정리 (1)
시간 복잡도에 대한 내용은 자세히 다루지는 않을 예정이다. 본 글은 오로지 Linked List에 대한 내용만 기술할 것이다. 혼자 노트정리 한다고 생각하고 정리해 나갈 것이다. 시각 자료등은 유데미의 스위프트로 공부하는 데아터 구조를 참조하자. 직접 그려 넣고 싶지만 시간이 많이 걸려 하진 않을 것임. 먼저 링크드 리스트가 뭔지부터 알기 전에 배열의 특성을 살펴보자. 배열을 하나 만들었다고 가정하고 맨 앞에 요소를 하나 추가한다고 해보자. 그러면 시간은 얼마나 걸릴까? 답은 O(n)이다. 맨 앞에 요소를 추가하려면 먼저 있는 요소들을 한칸씩 밀어야 하기 때문이다. 만약 요소 1개당 1ms가 걸린다고 가정하고 요소가 백만개가 있다고 쳐보면 1000000ms -> 약 16.7분 정도가 걸린다. 너무 느려터..
[swift] 20492 세금
https://www.acmicpc.net/problem/20492 20492번: 세금 선린인터넷고등학교의 한 학생은 프로그래밍 대회에 참가하여 거액의 상금을 수상하는 영광을 누리게 되었다. 하지만, 이 학생이 상금 금액의 전부를 수령하게 되는 것은 아니다. 상금의 일부 www.acmicpc.net 두번째 출력 힌트는 입출력 예제에 있다. 출력 형태는 소수점이 없는 정수 형태이다. 따라서 double로 계산했다가 출력은 Int형태로 바꿔주는 것이 중요하다. import Foundation let input = Double(readLine()!)! print(Int(input*0.78), Int(input*0.956))
[swift] 17295 엔드게임 스포일러
https://www.acmicpc.net/problem/17295 17295번: 엔드게임 스포일러 《어벤져스: 엔드게임》(영어: Avengers: Endgame)은 2019년 개봉한 미국의 슈퍼히어로 영화로, 마블 코믹스의 동명 팀을 원작으로 하고 있으며, 마블 스튜디오가 제작하고, 월트 디즈니 스튜디오 www.acmicpc.net 그냥 입력을 구현하고 출력은 Avengers: Endgame 으로만 하면 되는 문제. import Foundation let input = readLine()! print("Avengers: Endgame")
[swift] 17256 달달함이 넘쳐흘러
https://www.acmicpc.net/problem/17256 17256번: 달달함이 넘쳐흘러 첫째 줄에 케이크 수 a를 구성하는 자연수 a.x, a.y, a.z 가 차례대로 주어진다. (1 ≤ a.x, a.y, a.z ≤ 100) 둘째 줄에 케이크 수 c를 구성하는 자연수 c.x, c.y, c.z 가 차례대로 주어진다. (1 ≤ c.x, c.y, c.z www.acmicpc.net 문제에서 요구하는 것은 딱히 없었다. 조건을 잘 보고 이항시켜서 구하고자 하는 bx,by,bz를 주하면 끝이다. 입력 조건을 보고 한꺼번에 입력해서 처리하도록 만드려 했으나 그냥 배열을 두개 만들어서 각각 대응시킨 후 만들도록 했다. import Foundation var ax, ay, az, cx, cy, cz: In..