[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS 193

[알고리즘 연습] 양궁대회 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 시도 import Foundation func solution(_ n:Int, _ info:[Int]) -> [Int] { var ascore = 0 var rscore = 0 var n = n var point: Float = 10 var ap: [(Int,Float)] = info[0...10].map { var result = $0 > 0 ? (Int(10..

[알고리즘 연습] 조이스틱 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/42860?language=swift 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 풀이 import Foundation func solution(_ name:String) -> Int { let name = Array(name) let aValue = Int(Character("A").asciiValue!) let zValue = Int(Character("Z").asciiValue!) //..

[Network] HTTPS의 동작방식

안녕하세요 이누입니다!🐶 일반적인 브라우저는 HTTPS가 아닌 HTTP만으로 구성된 사이트에 접속하려하면 경고 메세지를 띄웁니다. 해당 사이트가 신뢰할 수 있는 사이트가 아닐 수 있기 때문입니다. HTTPS는 HTTP와 무엇이 다르길래 이를 확인하고 경고 메세지까지 띄우는 것일까요? HTTPS 기존의 HTTP 방식은 전송중인 데이터를 가로채면 누구나 데이터를 읽을 수 있었습니다. 가령 고객이 특정 쇼핑몰에서 신용카드 정보를 작성하여 서버에 전송하면, 해당 내용이 전혀 암호화되지 않은 채로 인터넷을 돌아다니게 되는 것입니다. HTTPS는 HTTP의 이런 보안적 문제를 해결한 프로토콜입니다. HTTP를 SSL(Secure Sockets Layer) 프로토콜 위에서 돌아가도록하여 클라이언트와 서버가 주고받는 ..

[알고리즘 연습] 행렬 테두리 회전하기 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/77485?language=swift# 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 풀이 import Foundation func solution(_ rows:Int, _ columns:Int, _ queries:[[Int]]) -> [Int] { var matrix = [[Int]]() var answer = [Int]() for i in 0..

[Network] TCP의 흐름제어와 혼잡제어

네트워크 통신과정 도중에는 네트워크 혼잡성 및 receiver의 overload 등의 사유로 데이터가 손실되거나, 전달 순서가 바뀌는 등의 문제가 발생할 수 있습니다. 이런 문제를 해결하고 통신의 신뢰성을 보장하기 위해 TCP/IP에서 사용하는 것이 흐름 제어와 혼잡 제어입니다. cf. TCP 버퍼 : 전송 및 수신 전 TCP 세그먼트는 보관하는 곳입니다. 송신 측은 버퍼에 TCP 세그먼트를 보관한 후 순차적으로 전송하고, 수신 측은 도착한 TCP 세그먼트를 애플리케이션이 읽을 때까지 버퍼에 보관합니다. 이 크기에 너무 작으면 당연히 손실되는 데이터가 많아지겠죠? 흐름 제어 수신 측이 송신 측보다 데이터 처리 속도가 느릴 경우 데이터를 손실할 위험이 존재합니다. 흐름 제어는 이런 송신 측과 수신 측의 데..

[알고리즘 연습] 실패율 (프로그래머스 lv1, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 1 func solution(_ N:Int, _ stages:[Int]) -> [Int] { var numOfPlayer = stages.count var rate = [Int:Float]() let dic = stages.reduce(into: [Int:Int]()) { $0[$1, default: 0] += 1 } for n in 1...N { r..

[알고리즘 연습] 비밀지도 (프로그래머스 lv1, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 풀이 // 방법 1 ("0"으로 이루어진 패딩을 계산적으로 추가해준 뒤 replacingOccurrences로 치환) func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] { var answer: [String] = [] for idx in 0..

[알고리즘 연습] 다트 게임 (프로그래머스 lv1, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/17682?language=swift 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 풀이 func solution(_ dartResult:String) -> Int { let numberList = dartResult.split(whereSeparator: {$0.isLetter || $0 == "#" || $0 == "*"}) let letterList = dartResult.split(whereSeparator: {$0.isNumber}) var totalScore = 0 for (i, (number, letter)) in zip(numberList, letterList).enum..

[알고리즘 연습] 시저 암호 (프로그래머스 lv1, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/12926?language=swift 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 풀이 func solution(_ s:String, _ n:Int) -> String { return s.utf8.map { var code = Int($0) switch code { case 65...90: code = (code + n - 65) % 26 + 65 case 97...122: code..

[DB] Index

Index (인덱스)? 인덱스는 데이터베이스의 테이블에 대한 검색 속도를 높여주는 자료구조입니다. 특정컬럼에 대한 인덱스를 생성하면 해당 컬럼의 데이터들이 정렬되어 별도의 메모리공간에 물리적주소와 함께 저장됩니다. 따라서 해당 컬럼에 where 조건 등을 걸어 접근할 경우 이를 활용할 수 있게 되어 접근 속도가 빨라집니다. 하지만 생성에 시간이 걸리고 INSERT, UPDATE, DELETE가 자주 발생하는 경우 성능이 하락할 수 있습니다. 일반적으로 하나의 컬럼을 key로 인덱스를 생성하지만, 여러개의 컬럼을 key로 인덱스를 생성하는 composite index라는 개념도 존재합니다. Index의 자료구조 이러한 인덱스를 구현하는 자료구조로는 대표적으로 해시테이블과 B+ Tree가 있습니다. 자료구조..