일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 재귀
- web
- Java
- HTML
- ftz level13
- level13
- PHP
- ftz
- C
- 시간복잡도
- LoB
- 큐
- 자료구조
- Stack
- SWiFT
- 스택
- c언어
- 파이썬
- 암호수학
- windosw 문자열
- 백준
- 정렬 알고리즘
- OSI
- windosws wbcs
- 미로 탐색 알고리즘
- 파일 시스템
- System
- pwnable.kr
- War Game
- 두근두근 자료구조
- Today
- Total
목록모두 보기 (276)
나의 기록, 현진록

프로그램을 절차적으로 실행되는 명령어의 집합이기 보다 여러 독립적인 부품(객체)들이 유기적인 집합체로 파악하고자 하는 패러다임이다. 객체지향적 설계- 자동차를 만든다고 할 때 수많은 부품의 결합과 연결로 하나의 완전한 자동차가 만들어지는 것처럼 프로그램의 일부분에 해당하는 부품, 즉 객체를 먼저 만들고 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 방법론라고 볼 수 있다. - 컴퓨터 부품을 갈아끼울 떄 해당하는 부품만 쉽게 교체하고 나머지 부품들은 건들이지 않아도 되는 것처럼 객체 지향적 원리를 잘 적용해둔 프로그램은 각각의 객체들이 독립적인 역할을 가지기 때문에 코드의 변경을 최소화하고 유지보수 하는 데 유리하다. - 객체 지향적 설계로 인해 프로그램을 보다 유연하고 변경이 용이하도록 만들 수..
클로저에 대한 강한 참조 사이클 강한 참조 사이클은 클래스의 인스턴스의 프로퍼티에 클로저를 할당하고 해당 클로저의 본문에 인스턴스를 캡처하는 경우에도 발생할 수 있다. 이러한 캡처는 클로저의 본문에서 self.someProperty 와 같이 인스턴스의 프로퍼티에 접근하거나 클로저는 self.someMethod()와 같이 인스턴스의 메소드를 호출하기 때문에 발생할 수 있다. 두 경우 모두 클로저가 self를 캡처하여 강한 참조 사이클을 생성하게 되는 경우이다. 클로저에서 강한 참조 사이클이 발생할 수 있는 이유는 클로저도 참조 타입(Reference Type)이기 때문이다. 프로퍼티에 클로저를 할당하면 해당 클로저에 참조를 할당하는 것이다. 아래의 예제는 self를 참조하는 클로저를 사용할 때 강한 참..
ARCSwift에서 메모리를 추적하고 관리하기 위한 메모리 관리 방식이다. Reference Counting으로 메모리 할당과 해제 여부를 결정한다. 참조 타입은 메모리에서 Heap 영역에 할당 되고 그 인스턴스에 대한 Reference Count를 가진다. 자동으로 관리된다고 하지만 순환 참조(Circular Reference)가 발생하지 않도록 하기 위해서는 개발자의 추가적인 비용?이 필요하다. ARC / GCJAVA에서의 GC(Garbage Collection)과 비슷하지만 분명한 차이는 Reference Counting 시점이다. GC는 런타임 중에 동적으로 메모리를 추적한다. 이러한 경우 프로그램이 실행 중인 동안 계속해서 메모리를 감시하기 때문에 이에 따른 부하가 발생하지만 불필요한 메모리가 ..
struct User{ var name: String var age: Int}var a = User(name: "유현진", age: 5)var b = User(name: "유현진 아님", age: 6)var c = ba.name = "유"print(a)print(b)print(c)b.name = "현"print(a)print(b)print(c)// User(name: "유", age: 5)// User(name: "유현진 아님", age: 6)// User(name: "유현진 아님", age: 6)// User(name: "유", age: 5)// User(name: "현", age: 6)// User(name: "유현진 아님", age: 6) class User{ var name: St..
1. Struct와 Class주요 차이점특징StructClass메모리 할당Stack 영역, 메모리에서 값을 복사해 사용하므로 독립된 인스턴스를 생성Heap 영역, 메모리에서 동일한 인스턴스를 여러 곳에서 참조타입값 타입(Value Type)참조 타입(Reference Type)상속불가능가능성능메모리 복사가 빨라 성능이 우수메모리 참조로 인해 성능이 낮음 struct User{ var name: String var age: Int}var a = User(name: "유현진", age: 5)var b = User(name: "유현진 아님", age: 6)var c = ba.name = "유"print(a)print(b)print(c)b.name = "현"print(a)print(b)print(c)..
https://school.programmers.co.kr/learn/courses/30/lessons/774861. 문제이해판매원이 칫솔을 판매하면 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망판매원 마다 얼마의 수익을 가지는지 구하기모든 판매원은 칫솔 판매로 발생하는 이익의 10%를 자신을 조직에 참여시킨 추천인에게 배분하고 나머지를 가짐10%를 계산할 때 1원 미만은 무시칫솔 개당 100원2. 설계조직 최상위인 center 를 제외한 모든 판매원은 부모 관계를 가짐모든 판매원은 수수료를 부모에게 배분해야 함판매 집계 데이터 요소마다 center까지 도달하며 수익을 배분하기3. 코드func solution(_ enroll:[String], _ referral:[String], _ seller:[..
https://www.acmicpc.net/problem/24581. 문제이해키가 모두 다른 N명의 학생 중 자신의 키가 몇 번째인지 알 수 있는 학생의 수 구하기2. 접근방법X 노드에서 출발하거나, 다른 노드에서 X 노드에 도착하는 것이 모든 노드에 대해 가능할 때 자신의 키가 몇 번째인지 알 수 있는 학생이다.플로이드 워셜모든 지점에서 다른 모든 지점까지 최단 경로 구할 수 있음이 문제는 거리를 구하는 것이 아닌 도달이 가능한지만 구하면 됨자신의 키가 몇 번째인지 알 수 있는 학생 == 모든 노드에 접근 가능한 노드3. 코드func solution(){ var input = readLine()!.split(separator: " ").map{Int(String($0))!} let N = i..
https://www.acmicpc.net/problem/44851. 문제이해“젤다의 전설” 게임에서 화폐 단위는 루피간혹 “도둑루피”라 불리는 루피도 존재하는데, 이걸 획득하면 소지한 루피가 감소하게 된다주인공은 N x N 동굴에서 제일 왼쪽 위(map[0][0])에서 시작해서 제일 오른쪽 아래 칸인 map[N-1][N-1]까지 이동해야 하며, 한 번에 상하좌우 한칸씩 이동할 수 있다.모든 칸에 도둑루피가 존재하며 시작점부터 도착점까지 잃는 금액을 최소로 하여 이동하려고 할 때 링크가 잃을 수 밖에 없는 최소 금액을 구하라케이스마다 N과 N x N만큼의 동굴에 있는 도둑루피가 주어짐2. 설계동굴 크기와 같은 최단경로 테이블 result를 최댓값으로 초기화시작점 result[0][0]을 동굴의 시작점으로..
https://www.acmicpc.net/problem/11657 1. 문제이해한 도시에서 출발하여 다른 도시에 도착하는 버스가 있다.N개의 도시(노드), M개의 버스(간선)입력 형태는 A, B, CA는 시작 도시, B는 도착 도시, C는 버스를 타고 이동하는데 걸리는 시간C는 양수가 아닌 음수일 수도 있다.(타임머신)1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하자 - 요구 출력만약 1번 도시에서 출발해 어떤 도시로 가는 과정에서 시간을 무한히 오래 전으로 되돌릴 수 있다면 -1 출력 (음의 사이클)1번 도시에서 출발해서 모든 나머지 도시마다 가장 빠른 시간을 출력하되 해당 도시로 가는 경로가 없다면 -1 출력 2. 접근방법가중치에 음수가 있으므로 밸만-포드 알고리즘 사용하기밸만-..

https://www.acmicpc.net/problem/17825 1. 문제이해시작 칸에 말 4개말은 화살표 방향대로만 이동 가능말이 파란색 칸에서 이동을 시작할 경우에는 파란색 화살표로만 이동 가능A 말이 주사위 값 만큼 이동해야 할 곳에 다른 말이 있다면 A 말은 이동 불가, 도착점일 경우엔 상관 없음말이 이동을 마칠 때마다 칸에 적혀있는 수가 점수에 추가됨게임은 총 10개의 턴(10개의 주사위)만큼 이루어지고, 입력으로 주사위에서 나올 수 10개가 주어짐얻을 수 있는 점수의 최댓값을 구하라. 2. 접근방법입력으로 발판에 대한 입력이 주어지지 않아 발판에 대한 구조를 설계해야 함배열 형식에서의 최댓값을 구하라 = dfs, 완전탐색, 백트래킹어떠한 자료구조로 말이 이동하도록 할 것인가?중복된 점수가..