본문 바로가기

반응형

분류 전체보기

(395)
[BOJ] 백준 11726 2xn 타일링 (Swift) 문제https://www.acmicpc.net/problem/11726풀이dp로 풀이할 수 있는 문제$f(1) = 1, f(2) = 2$ 이다. 이는 그림을 그리면 쉽게 확인할 수 있다.f(3)을 구해야하는데, 이는 $f(1)$에다가 2x2의 타일을 하나 붙이기 + $f(2)$ 에다가 2x1 타일을 하나 붙인 것과 동일하다.2x2 타일은 || 이렇게 생긴 타일은 붙일 수가 없다.f(3)을 예시로 들면 f(1)이 | 이라고 가정하고, 2x2인 || 타일을 붙인다고 가정할 때, f(2)인 || 타일에 |을 붙이는 것과 동일하기 때문이다.따라서 2x2 타일은 = 와 같인 타일밖에 붙일 수 없다.점화식은 다음과 같다.$f(1) = 1, f(2) = 2$$f(n) = f(n - 1) + f(n - 2)$소스코드후..
[BOJ] 백준 9095 1, 2, 3 더하기 (Swift) 문제https://www.acmicpc.net/problem/9095풀이dp로 쉽게 풀 수 있는 문제이다.1을 만드는 방법은 1 단 하나이다.2를 만드는 방법은 1 + 1, 2 두개3을 만드는 방법은 1 + 1 + 1, 2 + 1, 1 + 2, 3 총 4개이다.여기서 4를 만드는 방법을 구하면 다음과 같이 해석할 수 있다.1을 만드는 방법 + 32를 만드는 방법 + 23을 만드는 방법 + 11, 2, 3을 이용해 4를 만드는 방법은 총 7가지다.5, 6, 7.. 도 동일하게 적용할 수 있다.점화식은 다음과 같다.$f(1) = 1, f(2) = 2, f(3) = 4$$f(n) = f(n-3) + f(n-2) + f(n-1)$소스코드후기기본적인 dp 문제였다.
[BOJ] 백준 1003 피보나치 함수 (Swift) 문제https://www.acmicpc.net/problem/1003풀이시간제한이 0.25초로 짧은 편에 속하는 문제이다.문제에서 주어진 대로 소스코드를 짠다면 시간복잡도는 $O(2^n)$이고, n이 최대 40이므로 0.25초 내에는 풀 수 없어 다른 방법으로 풀이해야한다.f(2)를 구한다면 f(1), f(0)이 호출된다.f(3)은 f(2) + f(1) 이므로, f(3) = f(1) + f(0) + f(1)이된다.f(4)는 f(3) + f(2) 이므로 ...f(0) = (0, 1), f(1) = (1, 0) 로 초기값을 설정하여, dp를 활용해서 풀 수 있을 것 같아서 풀이하였다.$f(n) = f(n - 1) + f(n - 2)$$f(0) = (0, 1), f(1) = (1, 0)$이는 $O(n)$의 시..
[BOJ] 백준 17219 비밀번호 찾기 (Swift) 문제https://www.acmicpc.net/problem/17219풀이Dictionary에 대한 이해만 있다면 쉽게 풀 수 있는 문제[String: String] 형태의 빈 Dictionary 프로퍼티를 생성하고, n개의 입력만큼 key value로 할당해준다.그 이후, dictionary에 value를 출력해주면 되는 문제이 문제에서는 '반드시 이미 저장된 사이트 주소가 입력된다.' 라는 문장이 있기 때문에 강제 언래핑을 해줘도 무방하다.소스코드후기난이도가 실버 4로 책정이 되었는데, Dictionary만 알고 있다면 브론즈 수준의 문제
99클럽 코테 스터디 31일차 TIL: 정렬 문제https://www.acmicpc.net/problem/1755풀이간단한 구현 및 정렬문제이다.Swift에 sort 메서드 안에서 클로저로 정렬하는 방법을 제시해 주는 방법으로 풀이하였다.숫자를 문자로 변환하는 것은 dictionary를 쓰거나 enum을 사용하거나 여러 방법으로 할 수 있지만 enum으로 풀었다.소스코드후기쉽게 풀 수 있는 문제였다.
99클럽 코테 스터디 30일차 TIL: LIS 문제https://www.acmicpc.net/problem/1965풀이LIS를 구하는 문제이전에 풀었던 문제와 동일하다.다만 이전에 풀었던 문제에서는 LIS를 구하라고 명확히 나와있는데,이 문제는 문제를 읽고 LIS를 구해야한다고 깨달아야? 하는 문제근데 LIS를 알고 보면 쉽게 도출할 수 있었다.소스코드후기LIS를 구하는 문제. N이 컸다면 이분탐색으로 구했을 것 같다.
99클럽 코테 스터디 29일차 TIL: DP 문제https://www.acmicpc.net/problem/9461풀이전형적인 dp 문제이다.초기값은 다음과 같다.$f(1) = 1, f(2) = 1, f(3) = 1$점화식은 다음과 같다.$f(n) = f(n-2)+f(n-3)$초기값과 점화식을 알면 DP 문제는 그냥 풀 수 있다.소스코드후기어제 그저께 풀었던 dp 문제보다는 훨씬 쉬웠던 문제
99클럽 코테 스터디 28일차 TIL: LIS 응용 문제https://www.acmicpc.net/problem/11055풀이어제 풀었던 문제에서 약간만 응용하면 쉽게 풀 수 있는 문제이다.dp값을 초기화 하는 것은 자기 자신의 값으로 초기화 해주자.=> 자기 자신도 부분수열이 될 수 있기 때문이중 for문을 돌면서 이전 원소보다 크다면 내 원소를 붙일 수 있는 것을 기억하자.코드는 어제 푼 것과 거의 동일하다.소스코드후기전날 풀었던 문제와 거의 유사해서 쉽게 풀 수 있었다.

반응형