전체 글

공부와 경험의 기록!
·iOS
// 10진수 -> 2진수 let num: Int = 10 let binary_num = Int(String(num, radix: 2))! print(binary_num) // 2진수 -> 10진수 let binary_num = "1010" let num = Int(num, radix: 2)! print(num)
·Algorithm (PS)
https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net Swift로 풀때 문자열을 for문으로 순회해서 하나씩 값을 확인할 때, Array로 만들고 숫자 인덱스로 접근할 수 있게 하는것이 훨씬 편하다 라는 것을 배운 문제이다 var word = "hello" 라는 문자열을 "h", "e", "l", "l", "o" 이렇게 접근하고 싶다면 var idx = input.index(input.startIndex, offsetBy: i) 이렇게 index로 꺼내고 word[inde..
·iOS
코딩테스트의 구현문제를 위해 빠질 수 없는 문자열처리에 대한 Swift 문법을 정리해보자 1. 문자열 입력받기 Swift에서 readLine() 함수를 사용해서 한줄 읽어들일 수 있는데, 이때 nil 값이 들어올 수 도 있으므로 Swift는 readLine 함수가 Optional 타입의 String을 반환하게 설계한듯하다 어처피 백준에서 옵셔널 처리할 일은 없으므로 강제옵셔널 (!) 처리를 해준다. var input = readLine()! // 문자열 하나 입력받기 2. 문자열의 원소를 하나씩 출력하기 !! Swift는 input[1] 이런식으로 바로 Int 값으로 인덱스 접근이 허용되지 않는다 !! index() 메소드를 이용해서 인덱스를 가져온 후 가져온 인덱스로 문자열에 접근해야 한다 for i ..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 행렬의 곱은 (n*k) 사이즈 행렬과 (k*m) 사이즈 행렬이 곱해졌을 때 (n*m) 크기의 행렬을 리턴한다는 특징이 있다 import Foundation func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { let n = arr1.count // 세로 let m = arr1[0].count // arr1 가로 == arr2 세로 let t = ..
·Algorithm (PS)
https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 1. BFS 산봉우리들을 세는 문제이다. 좌표는 상하좌우 + 대각선, 총 8방향으로 인접한 칸이면 이동할 수 있으며, 높이 값이 0 이면 산봉우리가 아니다 !!! 따라서 bfs 탐색 또한 높이가 0 보다 클 때만 처리했다. bfs에서 , 현재 확인중인 array[x][y] 값을 중심으로, 자기자신 보다 높은 위치를 만나면 (x, y) 에 해당하는 봉우리 라인은 산봉우..
·iOS
Swift로 코딩테스트를 볼 일이 생겨서 준비를 하는 중에 정리해보고 있다. 새삼 Swift는 기본 문법의 내장 함수 파라미터 이름 하나하나가 정교하다는 느낌을 받는다.. ex) print() 함수의 separator: 라던지.. 그리고 고차원 언어이므로 지원하는 내장 함수나 기능이 풍부하다 !! Python 만큼 대중화(?) 되지 않아서 그렇지 있을건 다 있는 함수이고, 다만 코딩테스트 볼 때는 옵셔널한 값을 받지 않을것이므로 옵셔널 강제 해제를 해주고 있다. 원래 PS때 쓰던 언어가 파이썬이므로 파이썬과의 비교가 있을 수 있습니다(!) 백준 기준으로 보통 이렇게 많이 입력을 받는다 배열에 대한 정보가 주어지기 이전에 배열의 세로길이와 가로길이를 먼저 입력받고, 2차원 배열을 입력받는 코드에 대한 예시..
·Algorithm (PS)
https://www.acmicpc.net/problem/10836 10836번: 여왕벌 입력의 첫 줄에는 격자칸의 가로와 세로 크기 M(2 ≤ M ≤ 700)과 날짜 수 N(1 ≤ N ≤ 1,000,000)이 자연수로 주어진다. 첫날 아침의 애벌레 크기는 모두 1이므로 입력에 주어지지 않는다. 다음 N개의 www.acmicpc.net 이 문제는 구현/시뮬레이션 유형이지만 한편으로는 greedy 알고리즘으로 규칙을 찾아야 한다. 핵심 아이디어는 다음과 같다. 왼쪽 아래에서부터 위, 오른쪽 방향으로 성장한 애벌레의 값을 갱신해주는데, 이 화살표 순서대로 숫자가 작아지지 않는다고 했으므로, 갱신되지 않은 (m-1) * (m-1) 칸들의 값은 자기자신의 바로 윗칸의 값을 가져오면 된다. 즉 자기자신의 바로 윗..
Container Technology 1. 컨테이너란 최근에는 컨테이너가 등장했다. Host 로부터 격리되어 독립적인 환경의 이미지 파일로부터 실행되는 프로세스이다. namespace와 cgroup 기술을 사용한다. 원래 VM도 OS 를 이미지화해서 만들지만 컨테이너에서 말하는 이미지는 어플리케이션 이미지이다. 내가 앱을 돌릴때 필요한 라이브러리, 어플리케이션 자체를 이미지화해서 만들어놓은 것이다. 2. 컨테이너와 VM의 종류 Linux LXC : OS 내에서 작동하는 경량화된 VM 구현. Docker : Docker 출시 이후로 컨테이너가 각광받기 시작함. 개발자들이 다양한 OS에서 작동하는 동일한 개발 환경을 구현하는 것이 목적. Docker Image 란 실행에 필요한 모든 것을 포함하여 docke..
minjiwoo
MJ workspace