Study 16

[iOS/Swift] WKWebView (+ SFSafariViewController)

Q. 지난 PHP 글에 이어서 iOS 글을 쓰는 이유 ? A. 알 수 없다. 아직 맥북도 XCode 도 낯설지만 웹뷰에 대해서 며칠간 너무 열심히 조사했기 때문에 잊지 않기 위해 정리하고자 한다. 이번 게시글에서는 앱에서 웹 페이지를 여는 세가지 방법에 대해 알아보자! (1) 사파리 앱을 열어줌 (2) WKWebView 로 열어줌 (3) SFSafariViewController 로 열어줌 1. Safari 앱 아이폰에 설치된 Safari 를 열어서 웹 페이지를 로딩하는 방법이다. 별도의 설정이 필요 없어 간편하지만, 커스텀이 전혀 불가능하고 Safari 로부터 어떠한 이벤트를 받아온다던가 앱 사이의 상호작용은 불가능하다는 단점이 있다. @IBAction func openSafariApp(_ sender:..

Study/cs 2021.11.22

[PHP] 🐘

PHP 에 대해서 왜 글을 쓰는가 ? 나도 미지수이다 💫🐘💫 테스트 개발 하는 김에 동작원리나 PHP 기본 문법만 잠깐 훑고 가보려 한다. 문법 부분은 프로젝트에서 사용하는 것만 ! PHP 란? Hypertext Preprocessor C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어 이는 동적 웹 페이지를 쉽고 빠르게 만들 수 있도록 해주는 데 목적이 있다. PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 코드를 해석하여 자동으로 HTML 문서를 생성하기에 동적으로 빠르게 HTML 문서를 만들 수 있다. 이같이 PHP는 HTML을 프로그래밍적으로 생성해주고, 데이터베이스와 상호작용하면서 데이터를 저장하고ㆍ표현하는 서버와 브라우저 간의 다리 역할을 한다고 볼..

Study/cs 2021.10.28

[백준/Java] 9095 1, 2, 3 더하기* (feat. 브루트포스/완전탐색)

문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. # 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. # 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 이전 포스팅에서 다이나믹 프로그래밍을 사용해서 해결했는데, 스터디를 진행하면서 브루트 포스(재귀)로 푸는 방법을 습득하게 되어서 그 방식에 대해서도 따로 정리해두려 한..

Study/algorithm 2021.10.12

[백준/Java] 11723 집합 (feat. 비트마스크)

문제 비어있는 공집합 S가 주어졌을 떄, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {1, 2, ..., 20} 으로 바꾼다. empty: S를 공집합으로 바꾼다. # 입력 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하..

Study/algorithm 2021.10.12

[백준/Java/DP] 9095 1, 2, 3 더하기

문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. # 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. # 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 이 문제 또한 "다이나믹 프로그래밍" 기법을 사용한다. 다이나믹 프로그래밍 문제는 다음과 같은 문제 해결 루틴을 적용하면 된다. 테이블 정의하기 점화식 찾기 초기값 정..

Study/algorithm 2021.10.06

[백준/Java/DP] 11726 2xn 타일링 (feat. 다이나믹 프로그래밍)

문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. # 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) # 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 이 문제는 "다이나믹 프로그래밍" 기법을 사용하여 해결할 수 있다. 다이나믹 프로그래밍이란, 큰 문제를 작은 문제로 나누어 푸는 문제를 일컫는 것으로 쉽게 말해 답을 재활용하는 기법이다. 성립되기 위한 두가지 조건은 다음과 같다. Overlapping Subproblem 큰 문제를 작은 문제로 나누었을 때, 작은 단위로 나누어진 문제들은 같은 정답의 형태가 되어야 한다. Optimal Substruction 작은 부분에서 구한 최적의 답..

Study/algorithm 2021.10.06

[백준/Java] 9613 GCD 합 (feat. 유클리드 호제법)

문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. # 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다. # 출력 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다. 문제에서 말하는 GCD란? Greatest Common Divisor, 즉 최대공약수를 말한다. 그리고 여기서 새롭게 알게 된 알고리즘 "유클리드 호제법" 에 대해 소개하려 한다. 유클리드 호제법은, 주어진 두 수 사이에 존재하는 최대공약수 (GCD)..

Study/algorithm 2021.10.06

[백준/Java] 1676 팩토리얼 0의 개수*

문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. # 입력 첫째 줄에 N이 주어진다. (0 = 5) { cnt += n / 5; n /= 5; } return cnt; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(countZero(Integer.parseInt(br.readLine()))); } } © 참고 https://www.acmicpc.net/problem/1676 https://st-lab.tistory.com/1..

Study/algorithm 2021.10.06

[CS] 프로세스의 상태전이와 스케줄링

목차 프로세스 프로세스 상태 전이 프로세스 스케줄링 프로세스 란? 프로세스(Process)란 일반적으로 CPU에 의해 처리되는 프로그램으로 현재 실행 중인 프로그램을 말한다.하나의 프로세스는 여러가지 이벤트에 의해 일련의 서로 구분되는 상태 변화(생성 상태, 준비 상태, 실행 상태, 대기 상태, 완료 상태) 를 겪는다. 프로세스 상태 전이 프로세스의 상태 전이는 하나의 작업이 컴퓨터 시스템에 입력되어 완료되기까지 프로세스의 상태가 준비, 실행 및 대기 상태로 변하는 활동을 말한다. 활동 상태는 프로세스가 기억장치를 할당받은 상태이며, 지연 상태는 기억장치를 할당받지 못한 상태이다. 디스패치는 준비 상태에 있는 여러 프로세스(Ready list) 중 실행될 프로세스를 선정(Scheduling)하여 CPU를..

Study/cs 2021.08.30

[CS] 디자인 패턴 유형과 종류

목차 디자인 패턴 디자인 패턴 분류 디자인 패턴 종류 디자인 패턴이란? 소프트웨어 개발 방법에서 사용되는 디자인 패턴은 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식이다. 즉, 소프트웨어를 설계할 때 또는 프로그램 개발 과정에서 특정 부분에서 많이 발생하는 문제를 정리하여 상황에 따라 해결할 수 있는 해결책 (패턴)이다. 디자인 패턴 유형 생성 패턴 (Creational Pattern) : 객체의 생성과 관련된 패턴 추..

Study/cs 2021.08.30