📑 Category

[BOJ] 백준 15685번 드래곤 커브 - 파이썬(Python)
문제 드래곤 커브는 다음과 같은 세 가지 속성으로 이루어져 있으며, 이차원 좌표 평면 위에서 정의된다. 좌표 평면의 x축은 → 방향, y축은 ↓ 방향이다. 시작 점 시작 방향 세대 0세대 드래곤 커브는 아래 그림과 같은 길이가 1인 선분이다. 아래 그림은 (0, 0)에서 시작하고, 시작 방향은 오른쪽인 0세대 드래곤 커브이다. 1세대 드래곤 커브는 0세대 드래곤 커브를 끝 점을 기준으로 시계 방향으로 90도 회전시킨 다음 0세대 드래곤 커브의 끝 점에 붙인 것이다. 끝 점이란 시작 점에서 선분을 타고 이동했을 때, 가장 먼 거리에 있는 점을 의미한다. 2세대 드래곤 커브도 1세대를 만든 방법을 이용해서 만들 수 있다. (파란색 선분은 새로 추가된 선분을 나타낸다) 3세대 드래곤 커브도 2세대 드래곤 커브..

[SWM] 소마 7월 회고 - 기술 및 아키텍처 설계, 스프린트 시작
1. 기술 및 아키텍처 설계 프런트엔드 기술 스택의 경우에는 프런트엔드 개발 담당인 연수생B가 구성 후 우리에게 공유하였다. 나와 연수생A는 백엔드 파트 기술 스택 구성과 AWS 아키텍처 설계를 담당하였다. AWS 아키텍처 설계의 경우, 우리의 담당 멘토님이신 멘토님A의 도움을 받았다. 멘토님A는 현재 AWS 커뮤니티 빌더(Community Builder)로 활동하시는 AWS 전문가이시다. 덕분에 이전에 경험해보지 못한 보안과 대용량 트래픽을 고려한 서버/DB 아키텍처를 설계하고 구축해 볼 수 있었다. 1.1. 기술 스택 선택하기 프론트엔드 파트에서 선정된 기술 스택은 다음과 같다. TypeScript/ReactJS React-Router Styled-Components Zustand 백엔드와 데이터베이..

[BOJ] 백준 2133번 타일 채우기 - 파이썬(Python)
문제 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 💡 풀이 및 코드 n = int(input()) dp = [0] * (n + 1) dp[0] = 1 for i in range(2, n+1, 2): dp[i] += dp[i-2] * 3 for j in range(0, i-2, 2): dp[i] += dp[j] * 2 print(dp[n]) 간단해 보이지만 만만하게 봐서는 안되는 D..

[BOJ] 백준 2294번 동전 2 - 파이썬(Python)
문제 n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다. 사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. 입력 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주어질 수도 있다. 출력 첫째 줄에 사용한 동전의 최소 개수를 출력한다. 불가능한 경우에는 -1을 출력한다. https://www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가..

[디자인패턴] Template Method 패턴 - 하위 클래스에서 구체적으로 처리하기
※ Java 언어로 배우는 디자인 패턴 입문(영진닷컴) 도서를 바탕으로 작성된 내용입니다. Template Method(템플릿 메소드) 패턴 소개 상위 클래스에서 템플릿에 해당하는 추상 메소드 정의, 하위 클래스에서 해당 추상 메소드를 실제로 구현 상위 클래스에서 동작 및 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용 결정하도록 설계한 패턴 같은 동작을 하거나 같은 구조를 가졌지만 일부 코드(내용)만 다른 두 개 이상의 클래스가 존재할 때 적용 가능 예제 프로그램 - JAVA - AbstractDisplay 클래스 (AbstractDisplay.java) AbstractClass(추상 클래스) 역할 public abstract class AbstractDisplay { // 추상 클래스 Abstra..

[디자인패턴] Adapter 패턴 - 바꿔서 재이용하기
※ Java 언어로 배우는 디자인 패턴 입문(영진닷컴) 도서를 바탕으로 작성된 내용입니다. Adapter(어댑터) 패턴 소개 직류 12볼트로 작동하는 노트북을 교류 100볼트의 AC전원에 연결할 때 사용하는 AC 어댑터와 같은 기능 클라이언트가 사용하는 인터페이스가 정의되어 있는데 기존의 코드(클래스)가 비슷한 기능은 하지만 인터페이스와 내용이 다를 떄 기존 코드를 정의된 인터페이스의 구현체로 바꿔주는 패턴 Adapter는 한 번 포장해서 다른 용도로 사용할 수 있게 교환해주는 역할 두 가지 종류로 구현 클래스에 의한 Adapter 패턴 (상속을 사용한 Adapter 패턴) 인스턴스에 의한 Adapter 패턴 (위임을 사용한 Adapter 패턴) 예제 프로그램 - JAVA Banner(이미 주어진 코드)..

[디자인패턴] Iterator 패턴 - 순서대로 지정해서 처리하기
※ Java 언어로 배우는 디자인 패턴 입문(영진닷컴) 도서를 바탕으로 작성된 내용입니다. Iterator(이터레이터/반복자) 패턴 소개 집합 객체의 내부 구조를 노출시키지 않고 반복하여 순회하는 방법을 제공한 패턴 순서대로 지정하면서 전체를 검색하는 처리 예제 프로그램 - JAVA - Aggregate 인터페이스 (Aggregate.java) 집합체를 나타내는 인터패이스 public interface Aggregate { public abstract Iterator iterator(); } - Iterator 인터페이스 (Iterator.java) 요소를 순서대로 검색해가는 인터페이스 public interface Iterator { public abstract boolean hasNext(); pub..

[BOJ] 백준 1890번 점프 - 파이썬(Python)
문제 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래로 가야 한다. 한 번 점프를 할 때, 방향을 바꾸면 안 된다. 즉, 한 칸에서 오른쪽으로 점프를 하거나, 아래로 점프를 하는 두 경우만 존재한다. 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 이동할 수 있는 경로의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸..