Swift로 PS 하기
Algorithm/BOJ PS2024. 1. 20. 22:20Swift로 PS 하기

개요 Swift로 PS를 한다는 것 Swift로 PS를 한다는 것은 직진할 수 있는 길을 한 바퀴 돌아가거나, 평범한 길 대신에 가시 밭길을 걷거나, 그냥 스스로를 고문하는 그런 것과 비슷하다. ▼ 사실 Swift로 PS를 한다고 하면 조금 말리고 싶지만, 대부분이 하고 싶어서 하는게 아니라 iOS 개발자로 취직할 때 Swift로 PS를 하지 않고 다른 언어로 하면 쿠사리를 먹는다는 정보를 듣고 하는 것임을 알고 있다. 그게 아니라 재밌어서라던가, 언어가 잘 맞는다는 이유면 굳이 말릴 필요가 없는거 같다. 약간 고통을 좋아하는 사람인가 생각한다. “그러는 너는 왜 Swift로 하는거냐” 그야… 재밌으니까…! 필자의 경험 필자는 솔직히 PS를 잘 한다고 하기는 힘든 레벨에 위치해있다. 하지만 C++과 Sw..

[Flutter] 동기와 비동기 개론
Develop/Flutter2024. 1. 20. 20:54[Flutter] 동기와 비동기 개론

개요 동기와 비동기, 프로그래밍을 공부하다보면 항상 등장하는 개념이다. 중요한 개념이고 꼭 알아야한다고 하지만 이게 왜 중요한 개념인지 잘 이해하지 못하고 넘어간 적이 많다.▼ 하지만 동기, 비동기라는 것은 사실 엄청나게 거창한 것은 아니고 우리의 상식 선에서 충분히 생각해 볼 수 있는 개념이다. 컴퓨터 공학과 학생이라면 아마 CS수업 중에서 이미 이와 비슷한 이야기를 듣기도 했을 것이다. 컴퓨터 전반에서 사용되고 있는 개념이면서 이해하고 보면 아주 당연한 이야기이기에 쉽게 이해할 수 있을 것이다. 동기(Synchronous) 동기란? 동기는 영어로 Synchronous이고, 다르게 번역하면 동시에라는 의미이다. 그렇다면 무엇을 동시에 수행하는 것이길래 `동기`라고 부르는 것일까? 그 답은 요청과 결과가..

4. Process Activities
CS/소프트웨어 공학2024. 1. 20. 19:284. Process Activities

Process Activities 소프트웨어 개발 단계는 소프트웨어 공학 게시글에서도 다룬, Specification Design and implementaion Validation(Testing) Evolution(Maintenance) 의 4 단계가 있다. 이들은 개발 방식에 따라 조금씩 다르게 구성되곤 하는데, waterfall 방식에서는 일련의 과정으로 구성되지만, incremental development에서는 개별적인 과정으로 구성된다. Software Specification 소프트웨어의 요구 사항들을 결정하는 것을 말한다. 요구 사항으로는 해당 프로그램에서 꼭 있어야하는 필요 기능과, 프로그램 개발에 있는 제약 사항들이 있을 것이다. 소프트웨어 개발에 들어가기 전에 정확히 무엇을 만들어야하..

브루트 포스
Algorithm/Algorithm 개념2024. 1. 20. 18:34브루트 포스

개론 브루트 포스(Brute force)는 정말 단순히 직역하면 짐승의 힘, 엄청난 힘 정도로 번역된다. 허나 제대로 번역하면 무차별 대입이라는 뜻이 나오게 된다. 그렇다고 엄청난 힘이 완전히 틀린 말은 아니다. 브루트 포스 알고리즘은 짐승들이 압도적인 힘으로 상대를 찍어누르듯, 엄청난 양의 데이터를 전부 대입해보는 알고리즘을 말하기에 압도적이라는 면에서는 비슷한 의미로 쓰이게 된다. 다른 말로 쉽게 말하면 전수 조사라고도 할 수 있다. 하지만 문제는 엄청난 양의 데이터를 어떻게 구할 것인가? 이다. 대입해 볼 데이터를 구해줄 사람은 없다. 즉, 브루트 포스 알고리즘은 단순히 데이터를 대입만 하는게 아니라 직접 데이터를 구해서 확인해보는 과정을 말한다. 브루트 포스 문제의 접근 방법 브루트 포스 문제의 ..

백준 1092번 배 - SWIFT
Algorithm/BOJ PS2024. 1. 20. 18:18백준 1092번 배 - SWIFT

문제 지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다. 각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보다 작거나 같은 자연수이다. 넷째 줄에는 각 박스의 무게가 주어진다. 이 값도 1,000,000보다 작거나 ..

백준 16234번 인구 이동 - SWIFT
Algorithm/BOJ PS2024. 1. 20. 17:34백준 16234번 인구 이동 - SWIFT

문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은..

3. 소프트웨어 프로세스 모델
CS/소프트웨어 공학2024. 1. 19. 23:513. 소프트웨어 프로세스 모델

소프트웨어 프로세스 모델이란 소프트웨어 프로세스 이전 포스트에서도 다루었지만 다시 이야기를 하자면, 소프트웨어 프로세스는 소프트웨어 시스템을 개발하기 위해 필요한 구조화된 활동들의 집합이다. 여러가지 종류의 소프트웨어 프로세스가 있지만 모두 아래의 요소들을 포함하고 있다. Specification Design and Implementation (Development) Validation (Testing) Evolution (Maintenance) 소프트웨어 프로세스 모델 소프트웨어 프로세스 모델은 어떤 프로세스의 대표적인 형태라고 할 수 있다. Plan-driven processes VS Agile processes 프로세스 모델에는 크게 두가지 형태가 존재한다. 하나는 Plan-driven, 다른 하나..

간단한 수학(+ 약간의 정수론)
Algorithm/Algorithm 개념2024. 1. 19. 17:29간단한 수학(+ 약간의 정수론)

개론 기하와 벡터, 행렬 식과 같은 수학이 아닌 중학생때 배웠던 기초적인 수학에 관한 알고리즘에 대한 설명이다. 정수론의 내용도 포함되어있다. (몇가지는 중학생때 제목만 들었던 거고 자세하게 배우지 않았던 것일 수도 있다.) 나머지 연산 모듈러 연산이라고도 하고 나머지 연산에 관한 다른 공식들이나 정리들은 이산수학에서 배울 수 있다. 더 자세한 것은 이산수학에서 모듈러 연산에 대해서 보기로 하고 이 글에서는 나머지 연산에 대한 간단하고 응용하기 좋은 공식 몇가지를 볼 것이다. 나머지 연산의 경우 답이 매우 커질 때, 어떤 수로 나눈 나머지를 답으로 요구하기도 한다. 그 외에도 원 순환을 구현할 때도 사용한다. 나머지 연산은 우리가 따로 나누고, 빼고 할 필요 없이 나머지 연산자라는 것이 있어 바로 구하는..

2. 소프트웨어 공학이란
CS/소프트웨어 공학2024. 1. 19. 13:192. 소프트웨어 공학이란

소프트웨어란? 소프트웨어라는 말을 들으면 처음 드는 생각은 작성한 코드, 컴파일한 바이너리 코드, exe 파일, app 등등을 먼저 생각하곤 한다. 그것들도 소프트웨어이긴 하나 그것만이 소프트웨어인 것은 아니다. 조금 더 넓은 의미로 아래의 것들도 소프트웨어로 볼 수 있다. Computer Programs 우리가 보통 생각하는 프로그램들이다. 작성한 코드, 컴파일한 바이너리 코드, exe 파일, app 등등이 있다. Configuration Files Configuration file은 코드에는 포함되지 않지만 프로그램을 구동할 때 필요로 하는 파일을 말한다. OS의 경우에는 OS가 구동될 때 사용하기 위해 따로 파일로 설정해놓은 값들이 Configuration File이라고 할 수 있다. System ..

알고리즘과 입출력
Algorithm/Algorithm 개념2024. 1. 18. 22:01알고리즘과 입출력

시간 복잡도 Big - O 표기법 주어진 Input의 개수를 의미하는 n을 기반으로 명령어들의 연산이 몇 번이나 실행됐는지를 숫자로 표시하는 것이다. Big - O : function ranking Better O(1) - 상수 시간 : 문제를 해결하는데 오직 한 단계만 처리함. O(log(n)) - 로그 시간 : 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 따라 줄어듬. O(n) - 직선적 시간 : 문제를 해결하기 위한 단계의 수와 입력 값 n이 1 : 1 관계를 가짐. O(nlog(n)) - 로그 직선적 시간 : 문제를 해결하기 위한 단계의 수가 n*log(n)번 만큼의 수행시간을 가짐 O(n^2) - 2차 시간 : 문제를 해결하기 위한 단계의 수는 입력 값 n의 제곱. O(n^3) - 3..

image