Shader
Β·
πŸ’» CS/μš©μ–΄
ShaderGPU(Graphics Processing Unit)μ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μœΌλ‘œ κ·Έλž˜ν”½ λ Œλ”λ§ κ³Όμ •μ—μ„œ λ‹€μ–‘ν•œ μ‹œκ°μ  효과λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ 데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©. μΌλ°˜μ μœΌλ‘œ 3D κ·Έλž˜ν”½μŠ€ API(ex: OpenGL, DirectX, Metal)μ—μ„œ μ‚¬μš©λ˜λ©°, GPUλ₯Ό ν™œμš©ν•˜μ—¬ κ³ μ†μœΌλ‘œ κ·Έλž˜ν”½ 연산을 μˆ˜ν–‰. Shader의 μ—­ν• 1. 3D λͺ¨λΈμ˜ λ³€ν™˜κ°μ²΄λ₯Ό 화면에 그리지 μœ„ν•΄ μœ„μΉ˜, 크기, νšŒμ „ 등을 μ‘°μ •.λͺ¨λΈ μ’Œν‘œμ—μ„œ ν™”λ©΄ μ’Œν‘œλ‘œ λ³€ν™˜.2. μ‘°λͺ… 및 색상 계산물체에 빛이 μ–΄λ–»κ²Œ λ°˜μ‚¬λ˜κ³  ν‘μˆ˜λ˜λŠ”μ§€ κ³„μ‚°ν•˜μ—¬ ν˜„μ‹€κ° μžˆλŠ” 이미지 생성.ex) λΉ›, 그림자, λ°˜μ‚¬3. ν”½μ…€ 색상 μ •μ˜ν…μŠ€μ²˜λ‚˜ 색상을 μ μš©ν•΄ 각 ν”½μ…€μ˜ μ΅œμ’… 색상을 κ²°μ •.그림자, 투λͺ…도, λ°˜μ‚¬ λ“± μ‹œκ°μ  효과λ₯Ό μΆ”κ°€.4. 포슀트 ν”„λ‘œμ„Έμ‹±λ Œλ”λ§λœ..
[DICOM-2] DICOM 파일 ꡬ쑰
Β·
πŸ’» CS
DICOM 파일의 κΈ°λ³Έ ꡬ쑰1. PreambleDICOM 파일의 μ²˜μŒμ— μœ„μΉ˜ν•œ 128λ°”μ΄νŠΈ 곡간 λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨κ³Όμ˜ ν˜Έν™˜μ„±μ„ μœ„ν•΄ ν¬ν•¨λœλ‹€. 2. Prefix"DICM"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ ν¬ν•¨λ˜μ–΄ μžˆμ–΄ DICOMνŒŒμΌμž„μ„ λͺ…μ‹œν•˜λŠ” 4λ°”μ΄νŠΈ 곡간 3. File Meta Information파일 λ©”νƒ€λ°μ΄ν„°μ˜ 정보λ₯Ό 포함. Transfer Syntax, SOP Class UID, SOP Instance UID λ“± 파일의 처리λ₯Ό μœ„ν•œ μ€‘μš”μ •λ³΄λ₯Ό λ‹΄κ³  μžˆλ‹€. DICOM Data Set의 μ‹œμž‘μ„ μ•Œλ¦¬λŠ” 뢀뢄이닀. 4. Data Set Tag와 Value둜 이루어진 Data Elementλ“€μ˜ 집합TagDICOM λ°μ΄ν„°μ˜ ν•„λ“œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ³ μœ μ‹λ³„μž. (Group, Element) ν˜•μ‹μœΌλ‘œ ν‘œμ‹œλœλ‹€. ex) (0010, 001..
[DICOM-1] DICOMμ΄λž€?
Β·
πŸ’» CS
DICOM(Digital Imaging and Communications in Medicine)의 μ •μ˜μŠ€μΊλ„ˆ, μ›Œν¬μŠ€ν…Œμ΄μ…˜, μ„œλ²„μ™€ 같은 κΈ°κΈ° 간에 의료 μ˜μƒκ³Ό ν•΄λ‹Ή μ˜μƒμ˜ 메타데이터가 μ €μž₯ 및 μ „μ†‘λ˜λŠ” 방법을 μ„€λͺ…ν•˜λŠ” ν‘œμ€€ μ˜λ£Œ μ˜μƒ 데이터λ₯Ό λ‹€λ£¨λŠ” 병원과 κ°œλ°œμžμ—κ²Œ DICOM은 ν•„μˆ˜μ μΈ ν‘œμ€€μ΄λ‹€. DICOM은 의료용 μ˜μƒ 데이터λ₯Ό 효과적으둜 μ €μž₯, 전솑, κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 약속이닀.DICOM은 μ—¬λŸ¬ 의료 μ˜μƒ λͺ¨λ‹¬λ¦¬ν‹°μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜μ—¬ 진단 μ—°κ΅¬μ˜ μƒμ„Έν•œ μ„€λͺ…μžλ£Œλ₯Ό λ§Œλ“œλŠ” 데 μ‚¬μš©ν•  수 μžˆλ‹€.μ΄λŸ¬ν•œ λͺ¨λ‹¬λ¦¬ν‹°λŠ” CT, PET, MRI, Xμ„  μ΄ˆμŒνŒŒμ™€ 방사선 μ˜μƒ λͺ¨λ‹¬λ¦¬ν‹°κ°€ ν¬ν•¨λœλ‹€. DICOM을 μ‚¬μš©ν•  λ•Œμ˜ μž₯점- DICOM은 μ˜λ£Œκ³„μ—μ„œ μ˜μƒ μ €μž₯에 κ°€μž₯ ν”νžˆ μ‚¬μš©λ˜λŠ” ν‘œμ€€μ΄λ‹€.- DICOM을 μ‚¬μš©ν•˜λ©΄..
DTO
Β·
πŸ’» CS/μš©μ–΄
DTO(Data Transfer Object) 데이터 전솑 객체. μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ 데이터λ₯Ό 효율적으둜 μ „μ†‘ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄. DTOλŠ” 보톡 DBμ—μ„œ κ°€μ Έμ˜¨ λ°μ΄ν„°λ‚˜ λ‹€λ₯Έ μ‹œμŠ€ν…œμœΌλ‘œ 전솑할 데이터λ₯Ό λ‹΄λŠ” 객체둜 μ‚¬μš©λœλ‹€. DBλ‚˜ μ„œλΉ„μŠ€ 계측 λ“±μ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν¬ν•¨ν•˜μ§€ μ•Šκ³  μˆœμˆ˜ν•œ λ°μ΄ν„°λ§Œμ„ ν¬ν•¨ν•œλ‹€. μ΄λ ‡κ²Œ 데이터λ₯Ό μ „μ†‘ν•˜λŠ”λ° ν•„μš”ν•œ 객체둜 DTOλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ 데이터 전솑 κ³Όμ •μ—μ„œμ˜ μ˜€λ² ν—€λ“œλ₯Ό μ΅œμ†Œν™”ν•˜κ³ , 데이터 ꡬ쑰λ₯Ό ν‘œμ€€ν™”ν•˜μ—¬ 개발자 κ°„μ˜ ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•œλ‹€. 일반적으둜 DTOλŠ” 데이터λ₯Ό λ‹΄λŠ” ν•„λ“œμ™€ ν•„μš”ν•œ λ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•œ 클래슀둜 κ΅¬ν˜„λœλ‹€. DTO ν΄λž˜μŠ€λŠ” 데이터λ₯Ό μ €μž₯ν•˜κ³  μ „μ†‘ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©λ˜λ©°, 주둜 DB의 ν…Œμ΄λΈ”κ³Ό μœ μ‚¬ν•œ ꡬ쑰λ₯Ό 가진닀. 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 데 ν•„μš”ν•œ ν•„λ“œμ™€ ..
[Swift] 이진탐색(Binary Search)
Β·
πŸ’» CS/μ•Œκ³ λ¦¬μ¦˜
이진탐색 데이터가 μ •λ ¬λ˜μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ 쀑간값과 λΉ„κ΅ν•˜λ©° νŠΉμ •ν•œ 값을 μ°Ύμ•„λ‚΄λŠ” 탐색 방법 κ΅¬ν˜„ μž¬κ·€ //μž¬κ·€μ μœΌλ‘œ ν‘œν˜„ν•œ 이뢄탐색 //11이 μ–΄λ””μžˆλŠ”μ§€ μ°ΎλŠ” μ΄λΆ„νƒμƒ‰μž…λ‹ˆλ‹€. var binaryArray = [0, 1, 4, 6, 8, 11, 14, 23, 24, 26, 28, 31, 41, 50] func recursiveBinary(array: [Int], target: Int, start: Int, end: Int) -> Int? { //μ‹œμž‘μ μ΄ 끝점보닀 컀지면? 이미 λͺ¨λ“  μ˜μ—­μ„ νƒμƒ‰ν–ˆλ‹€λŠ” 뜻 이겠죠? λͺ¨λ“  μ˜μ—­μ„ νƒμƒ‰ν–ˆλŠ”λ° νƒ€κ²Ÿ 숫자λ₯Ό //λͺ» μ°Ύμ•˜λ‹€λ©΄ nil을 리턴해 주도둝 ν•©μ‹œλ‹€. if start > end { return nil } //일단 반으둜 λ‚˜λˆŒκ±°λ‹ˆκΉŒ 쀑간을 μ°Ύμ•„μ€μ‹œλ‹€. var mid ..
λΉ„νŠΈλ§ˆμŠ€ν‚Ή
Β·
πŸ’» CS/μ•Œκ³ λ¦¬μ¦˜
λΉ„νŠΈλ§ˆμŠ€ν‚Ή μ»΄ν“¨ν„°λŠ” λ‚΄λΆ€μ μœΌλ‘œ λͺ¨λ“  자료λ₯Ό μ΄μ§„μˆ˜λ‘œ ν‘œν˜„ν•œλ‹€. 이런 νŠΉμ„±μ„ μ΄μš©ν•΄ μ •μˆ˜μ˜ μ΄μ§„μˆ˜ν‘œν˜„μ„ 자료ꡬ쑰둜 μ“°λŠ” 기법 λΉ„νŠΈλ§ˆμŠ€ν¬λ₯Ό μ΄μš©ν•˜λ©΄ 더 λΉ λ₯Έ μˆ˜ν–‰μ‹œκ°„, 더 κ°„κ²°ν•œ μ½”λ“œ, 더 적은 λ©”λͺ¨λ¦¬ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. λΉ„νŠΈ μ—°μ‚°μž λΉ„νŠΈλ§ˆμŠ€ν‚Ήμ€ 기본적으둜 λΉ„νŠΈλ₯Ό 닀뀄야 ν•˜λ―€λ‘œ, λΉ„νŠΈ μ—°μ‚°μžμ— λŒ€ν•΄μ„œ λ¨Όμ € μ•Œμ•„λ³΄μž. a & b a의 λͺ¨λ“  λΉ„νŠΈμ™€ b의 λͺ¨λ“  λΉ„νŠΈλ₯Ό AND μ—°μ‚°ν•œλ‹€. λ‘˜λ‹€ 1이라면 1, μ•„λ‹ˆλ©΄ 0 ex) 100 & 111 = 100 a | b a의 λͺ¨λ“  λΉ„νŠΈμ™€ b의 λͺ¨λ“  λΉ„νŠΈλ₯Ό OR μ—°μ‚°ν•œλ‹€. λ‘˜λ‹€ 0이라면 0, μ•„λ‹ˆλ©΄ 1 ex) 010 | 111 = 111 a ^ b a의 λͺ¨λ“  λΉ„νŠΈμ™€ b의 λͺ¨λ“  λΉ„νŠΈλ₯Ό XOR μ—°μ‚°ν•œλ‹€. λ‘˜μ΄ λ‹€λ₯΄λ‹€λ©΄ 1, μ•„λ‹ˆλ©΄ 0 ex) 011 ^ 101 = 110 ~a a의..
μΈν„°νŽ˜μ΄μŠ€
Β·
πŸ’» CS/μš©μ–΄
μΈν„°νŽ˜μ΄μŠ€ μ„œλ‘œ λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄ ꡬ성 μš”μ†Œκ°€ μ„œλ‘œ μƒν˜Έ μž‘μš©ν•˜λŠ” 방법을 μ§€μ •ν•˜λŠ” 계약 λ˜λŠ” κ·œμΉ™ 집합을 μ •μ˜ν•˜κΈ° μœ„ν•΄ 컴퓨터 κ³Όν•™ 및 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©λ˜λŠ” κ°œλ… μΈν„°νŽ˜μ΄μŠ€λŠ” 두 개 μ΄μƒμ˜ μ‹œμŠ€ν…œ 간에 경계 λ˜λŠ” λΈŒλ¦¬μ§€ 역할을 ν•˜μ—¬ ν‘œμ€€ν™”λœ λ°©μ‹μœΌλ‘œ ν†΅μ‹ ν•˜κ³  정보λ₯Ό κ΅ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μΈν„°νŽ˜μ΄μŠ€λŠ” 일반적으둜 κ΅¬ν˜„ 클래슀 λ˜λŠ” λͺ¨λ“ˆμ΄ 지원해야 ν•˜λŠ” μž‘μ—… λ˜λŠ” λ™μž‘μ„ μ •μ˜ν•˜λŠ” λ©”μ„œλ“œ λ˜λŠ” ν•¨μˆ˜ λͺ¨μŒμœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 방법은 μ„œλ‘œ λ‹€λ₯Έ ꡬ성 μš”μ†Œκ°€ μ„œλ‘œ μƒν˜Έ μž‘μš©ν•˜λŠ” 방법에 λŒ€ν•œ 청사진 역할을 ν•©λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ 좔상화 및 λͺ¨λ“ˆμ„±μ„ λ‹¬μ„±ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” ꡬ성 μš”μ†Œμ˜ κ΅¬ν˜„ μ„ΈλΆ€ 사항을 λ‹€λ₯Έ ꡬ성 μš”μ†Œμ™€μ˜ μ‚¬μš© λ˜λŠ” μƒν˜Έ μž‘μš©μ—μ„œ 뢄리할 수 있..
[Swift] λ°±νŠΈλž˜ν‚Ή
Β·
πŸ’» CS/μ•Œκ³ λ¦¬μ¦˜
λ°±νŠΈλž˜ν‚Ή λͺ¨λ“  경우의 수λ₯Ό κ³ λ €ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜. 닡이될 수 μ—†λŠ” ν›„λ³΄λŠ” 더이상 νƒμƒ‰ν•˜μ§€ μ•Šκ³  λ‹€μ‹œ λŒμ•„κ°€λŠ” μ•Œκ³ λ¦¬μ¦˜ λ°±νŠΈλž˜ν‚Ή 절차 DFS - μœ λ§ν•œ λ…Έλ“œ κ²€ν†  - μ„œλΈŒνŠΈλ¦¬ 이동 - λ°±νŠΈλž˜ν‚Ή μˆ˜ν–‰ DFS μˆ˜ν–‰ : μž¬κ·€λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ DFSλ₯Ό κ·ΈλŒ€λ‘œ μˆ˜ν–‰ μœ λ§ν•œ λ…Έλ“œ κ²€ν†  : μœ λ§ν•œ λ…Έλ“œλ©΄ μ„œλΈŒνŠΈλ¦¬λ‘œ μ΄λ™ν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ λ°±νŠΈλž˜ν‚Ήμ„ μˆ˜ν–‰ν•΄μ•Όν•¨ μ„œλΈŒνŠΈλ¦¬ 이동 : λ°©λ¬Έν•œ λ…Έλ“œμ˜ ν•˜μœ„ λ…Έλ“œλ‘œ μ΄λ™ν•˜μ—¬ λ‹€μ‹œ μž¬κ·€λ₯Ό 톡해 DFS μˆ˜ν–‰ λ°±νŠΈλž˜ν‚Ή μˆ˜ν–‰ : 더이상 μœ νš¨ν•œ λ…Έλ“œλΌκ³  μƒκ°λ˜μ§€ μ•ŠμœΌλ©΄ μƒμœ„ λ…Έλ“œλ‘œ λ°±ν•˜μ—¬ λ°±νŠΈλž˜ν‚Ή μˆ˜ν–‰ λ°±νŠΈλž˜ν‚Ή λŒ€ν‘œ 예제 https://www.acmicpc.net/problem/15649 15649번: Nκ³Ό M (1) ν•œ 쀄에 ν•˜λ‚˜μ”© 문제의 쑰건을 λ§Œμ‘±ν•˜λŠ” μˆ˜μ—΄μ„ 좜λ ₯ν•œλ‹€. μ€‘λ³΅λ˜λŠ” μˆ˜μ—΄μ„ μ—¬λŸ¬..
Entity
Β·
πŸ’» CS/λ°μ΄ν„°λ² μ΄μŠ€
Entity λ°μ΄ν„°μ˜ 집합 μ €μž₯되고, κ΄€λ¦¬λ˜μ–΄μ•Όν•˜λŠ” 데이터 κ°œλ…, μž₯μ†Œ, 사건 등을 가리킨닀. μœ ν˜• λ˜λŠ” λ¬΄ν˜•μ˜ λŒ€μƒμ„ 가리킨닀. νŠΉμ§• μ‹λ³„μž μœ μΌν•œ μ‹λ³„μžλ₯Ό κ°–κ³  μžˆμ–΄μ•Όν•œλ‹€. ex) 주민번호, ID λ“± μΈμŠ€ν„΄μŠ€ 집합 2개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€κ°€ μžˆμ–΄μ•Ό ν•œλ‹€. 속성 λ°˜λ“œμ‹œ 속성을 가지고 μžˆμ–΄μ•Όν•œλ‹€. ex) ν•™μƒμ˜ ν•™λ²ˆ, 이름, μ£Όμ†Œ λ“± 관계 λ‹€λ₯Έ 엔티티와 μ΅œμ†Œ ν•œ 개 이상 관계가 μžˆμ–΄μ•Ό ν•œλ‹€. ex) 학생은 이름을 κ°–κ³  있음 업무 μ—…λ¬΄μ—μ„œ κ΄€λ¦¬λ˜μ–΄μ•Όν•˜λŠ” 집합이닀. ex) 학생, 성적 μ’…λ₯˜ μ—”ν‹°ν‹°λŠ” μœ ν˜•, λ¬΄ν˜•μ— λ”°λ₯Έ μ’…λ₯˜, λ°œμƒν•˜λŠ” μ‹œμ μ— 따라 λ‚˜λ‰˜μ–΄μ§„λ‹€. μœ ν˜•κ³Ό λ¬΄ν˜•μ— λ”°λ₯Έ μ’…λ₯˜ μœ ν˜• μ—”ν‹°ν‹° μ§€μ†μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” μ—”ν‹°ν‹° κ°œλ… μ—”ν‹°ν‹° 물리적 ν˜•νƒœκ°€ μ—†λŠ” μ—”ν‹°ν‹°, κ°œλ…μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” μ—”ν‹°ν‹° ex) λ³΄ν—˜μƒν’ˆ, 쑰직..
[Swift] 동적 κ³„νšλ²• (Dynamic Programming) μ΄ν•΄ν•˜κΈ°
Β·
πŸ’» CS/μ•Œκ³ λ¦¬μ¦˜
이 κ²Œμ‹œκΈ€μ€ 개인적인 곡뢀λ₯Ό μœ„ν•΄ μž‘μ„±λœ κ²Œμ‹œλ¬Όμž…λ‹ˆλ‹€. 이 κΈ€μ˜ λͺ¨λ“  μΆœμ²˜λŠ” https://babbab2.tistory.com/100 μž…λ‹ˆλ‹€. 동적 κ³„νšλ²• 상ν–₯식 μ ‘κ·Όλ²•μœΌλ‘œ κ°€μž₯ μž‘μ€ λΆ€λΆ„μ˜ 해닡을 κ΅¬ν•œ ν›„, 이λ₯Ό μ €μž₯ν•˜μ—¬ μ €μž₯ν•œ 값을 μ΄μš©ν•΄ μƒμœ„ 문제λ₯Ό ν’€μ–΄κ°€λŠ” 방법 동적 κ³„νšμ˜ 핡심은 Memoization(λ©”λͺ¨μ΄μ œμ΄μ…˜)μ΄λΌλŠ” 기법인데 μ„€λͺ…은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. λ©”λͺ¨μ΄μ œμ΄μ…˜ λ™μΌν•œ 계산을 λ°˜λ³΅ν•΄μ•Όν•  λ•Œ, 이전에 κ³„μ‚°ν•œ 값을 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•œ ν›„ λ°˜λ³΅μˆ˜ν–‰μ„ μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ 싀행속도λ₯Ό λΉ λ₯΄κ²Œ ν•˜λŠ” 기법 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄λ‘œ μ΄ν•΄ν•˜κΈ° 0, 1, 2, 3, 5, 8, 13 ... μ΄λŸ°μ‹μœΌλ‘œ κ°€μž₯ 처음 0, 1을 μ œμ™Έν•˜κ³  λ‚΄ μ•žμ˜ 두 λ†ˆμ„ λ”ν•΄μ„œ λ‚˜λ₯Ό λ§Œλ“œλŠ” 것이 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μž…λ‹ˆλ‹€. μž¬κ·€ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ κ΅¬ν˜„ func ..
JerryiOS
'πŸ’» CS' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘