Codable

많은 프로그래밍 작업은 데이터를 어딘가로 전달하는 것과 관련된다. 네트워크를 통해서 전송하거나, 디스크와 같은 영구 저장소로 전달하여 기록할 수도 있다. 프로그램이 실행시간에 사용하는 데이터는 그 필요와 목적에 맞게 구조화되고 각 단위가 연결되어 입체적인 그래프를 형성하기도 하지만, 전달과정에서 만큼은 일렬로 늘어선 비트의 연속체가 되어야 한다. 따라서 필연적으로 어떤 데이터가 유용성을 가지려면 직렬화 될 수 있어야 하고 그 반대로 역직렬화도 가능해야 한다.

이러한 직렬화 / 역직렬화와 관련하여 Foundation은 오래전부터 NSCoding 이라는 기술을 보유하고 있었다. 이는 간단하게 가장 기본이 되는 몇 가지 타입이 인코딩이 가능하다면, 각 객체의 속성을 키-값 쌍으로 묶어서 인코딩할 수 있다는 가정하에 일반적으로 사용될 수 있는 임의의 타입의 데이터까지 간단하게 확장할 수 있는 기술이다. (물론, 현재도 쓰인다. 단 보안상의 문제로 NSSecureCoding으로 대체되었다.)

Codable 더보기

오일러 프로젝트 84

이번 문제는 문제가 길고 복잡하기 때문에 풀이 위주로 갑니다.

문제 그대로의 규칙을 사용해서 ‘간이 모노폴리’ 시뮬레이터를 잘 작성한다음, 이를 충분히 여러번 돌려서 최종적으로 말이 도착하는 위치에 대한 데이터를 생성하면 된다.

오일러 프로젝트 84 더보기

오일러 프로젝트 83

이번 문제 역시 80 x 80 행렬에서 움직인 경로의 최소합을 구하는 문제로, 81, 82번에서 한층 더 업그레이드 된 문제라고 한다. 개인적으로는 82번이 좀 더 어려웠다고 생각하는데, 이 83번은 그냥 보통의 다익스트라 알고리듬의 적용 문제이다.

오일러 프로젝트 83 더보기

오일러 프로젝트 82

(참고: 이 문제는 81번 문제의 좀 더 어려운 버전입니다)

아래와 같은 5×5 행렬이 있습니다. 맨 왼쪽 열의 아무곳에서나 출발하여 위/아래/오른쪽으로만 움직이면서 맨 오른쪽 열까지 갈 때, 빨갛게 표시된 경로의 합이 994로 가장 작습니다.

31kB 짜리 파일 matrix.txt에는 80×80 행렬의 정보가 들어있습니다. 위와 같은 방법으로 이 행렬의 맨 왼쪽 열에서 출발하여 오른쪽 열까지 갈 때, 경로 합의 최소값은 얼마입니까?

오일러 프로젝트 82 더보기

오일러 프로젝트 80

80번 문제는 자연수의 제곱근을 100자리까지 구하는 문제이다. 대부분의 프로그래밍 언어들은 실수의 제곱근을 계산하는 함수를 제공하지만, 기본 실수타입은 100자리까지의 정밀도를 제공하지 않는다. 따라서 손으로 제곱근을 구하는 계산과정을 코드로 구현해야 한다.

오일러 프로젝트 80 더보기