
문제 문제 바로가기> BOJ 15685번: 드래곤 커브 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 풀이 드래곤 커브를 살펴보면, 규칙이 있는데, 다음 세대에 추가되는 선분의 방향 = `(이전 세대의 방향 정보를 역순 탐색 + 1) % 4` 를 한 것이 된다. 따라서 해당 규칙에 맞추어서 구현해주었다! 주의할 점은 역순으로 꺼내서 이어 붙어줘야 하는 것인데, 이 부분은 예제를 살펴보면 쉽게 이해할 수 있을 것 같다. C++ #include #include #define MAX 10..

UML (Unified Modeling Language) 시스템을 모델로 표현해주는 대표적인 모델링 언어 UML 목적 전체 시스템의 구조 및 클래스의 의존성 파악 유지보수를 위한 설계의 back-end 분석 제작 원활한 의사소통 및 설계 논의 시각화, 명세화, 문서화 UML 다이어그램 종류 1. 구조 다이어그램 (Structure Diagram) 클래스 다이어그램 (시스템을 구성하는 클래스들 사이의 관계 표현) 객체 다이어 그램 (객체 정보를 보여줌) 복합체 구조 다이어그램 (복합 구조의 클래스와 컴포넌트 내부 구조 표현) 등등 2. 행위 다이어그램 (Behavior Diagram) 활동 다이어그램 (업무 처리 과정, 연산 수행 과정 표현) 상태 머신 다이어그램 (객체의 생명주기 표현) 유즈케이스 다이어..

문제 문제 바로가기> BOJ 17135번: 캐슬 디펜스 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 풀이 1. 조합을 구현하여 궁수의 위치를 선정한다. (`solution() 함수`) 2. 정해진 궁수의 위치를 기반으로, 다음을 과정을 반복한다. 궁수의 적 공격 - 공격할 적의 우선순위를 구하기 위해 , pq에서 사용할 ATTACK 구조체 내에서 bool operator를 재정의해주었다. - 모든 궁수는 동시에 공격하므로, 공격 위치를 vector에 넣어두었다가 한 번에 공격해주었다. (이때, 이미 제거한 적을 또 c..

JavaScript 란? HTML, CSS와 함께 웹을 구성하는 요소 중 하나로, 웹 브라우저에서 동작하는 유일한 프로그래밍 언어 컴파일 없이 한줄 한줄 해석하며 바로 명령어를 실행하는 인터프리터 언어 HTML의 특정 요소를 선택하여 다양한 이벤트(ex. 마우스 클릭)에 따라 특정 동작을 하도록 기능을 넣을 수 있음 사용 방법 내부 스크립트 <script>태그를 HTML문서안에 넣어서 사용 주로 <body> 아래에 사용 외부 스크립트 자바스크립트 파일을 `.js` 확장자 파일로 저장한 후 불러옴 기본 문법 주석 // 한줄 주석 /* 블록 주석 */ 변수 JavaScript는 변수를 선언할 때 타입을 명시하지 않고 var 키워드를 사용하여 선언 JavaScript는 동적타입(Dynamic / Weak Ty..

문제 문제 바로가기> BOJ 15683번: 감시 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 cctv의 개수가 최대 8개로 적은 편이다. 따라서 가능한 cctv 방향을 모두 시뮬레이션 해보면서, 브루트포스 방식으로 문제를 풀었다. 탐색 방향을 미리 `dir` 배열에 정해두고, 모든 cctv의 방향을 정했을 때, 시뮬레이션 해주면 된다. C++ #include #include #define EMPTY 0 #define WALL 6 #define MAX 10 using namespace std;..

문제 문제 바로가기> BOJ 17070번: 파이프 옮기기1 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 풀이 DFS 탐색을 통해 간단하게 해결할 수 있는 문제다! 1. 파이프의 마지막 부분(초기값 : (1,2))을 추적해가면서 DFS 탐색 진행 (가로, 세로, 대각선 이동 방법이 다름) 2. 종료 조건 : 범위를 벗어나는 경우, 빈칸이어야하는 부분인 벽인 경우 (범위를 벗어나는 경우를 확인할 때, N보다 큰지만 확인해주면 된다. 더하는 방향으로만 이동하기 때문!) 3. (N, N)에..

문제 문제 바로가기> BOJ 14501번: 퇴사 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 dp를 이용해서, 뒤에서부터 거꾸로 오면서, 백준이가 얻을 수 있는 최대 수익을 구해 줄 수 있다. `dp[i]` : i+1 ~ N일 기간, 백준이가 얻을 수 있는 최대 수익 #include #include #define MAX 16 using namespace std; int N; int dp[MAX]; pair consult[MAX]; // time, pay void input(){ cin >> N; int t, p; for(int i=0; i> t >> p; consult[i] = {t, p}; } } void solution(){ for(i..

문제 문제 바로가기> BOJ 14891번: 톱니바퀴 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 문제에서 요구하는 대로 구현해주면 되는 간단한 문제였다! 1. 톱니바퀴가 맞닿은 극이 같은지, 다른지 판단하여 방향을 저장한다. 2. 저장해둔 방향대로 회전을 진행한다. 3. 점수를 계산한다. 다만,, 톱니바퀴 회전 전 방향을 저장하지 않고, 회전 후 바뀐 방향으로 비교하는 바람에 조금 헤맸다 ^^,, C++ #include #include #define MAX 4 #define SIZE 8 using ..

문제 문제 바로가기> BOJ 14890번: 경사로 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 2N 개의 길 모두를 살펴보면서 지나갈 수 있는 길의 개수를 세어주면 된다. 이때, 총 4가지 경우의 수가 있다. 1. 이전 칸과 높이가 같은 경우 ▶ 같은 높이의 칸을 세어주는 변수인 `cnt` 를 1 증가시켜준다. 2. 높이가 낮아지는 경우 (높이 차 = 1) ▶ 해당 칸을 제외하고, 앞으로 1-L개의 칸의 높이가 같아야, 경사로를 건설할 수 있다. 3. 높이가 높아지는 경우 (높이 차 = 1) ▶ 지금까지 L개 이상의 칸의 높..

문제 문제 바로가기> BOJ 17406번: 배열 돌리기 4 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 풀이 우선 K가 최대 6으로 작기 때문에, 모든 경우의 수를 탐색하는 방법으로 문제를 풀 수 있다. 문제를 풀 때 필요한 점은 다음 2가지 였던 것 같다. 1. 순열을 구현할 수 있는가? 2. 배열을 원하는 대로 조작할 수 있는가? 1(순열 구현) 을 만족하기 위해, cnt 변수와 visited 배열을 활용하여 재귀적으로 호출을 해주었다. 2(배열 조작)은 규칙을 찾는 게 중..

문제 문제 바로가기> BOJ 2206번: 벽 부수고 이동하기 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 풀이 벽을 하나씩 제거 + BFS 하는 경우, O(N^2*M^2)으로 시간 초과가 발생한다. 생각해보면, 어느 지점(y, x)에 도착할 때, 남은 기회가 있거나 or 없거나 둘 중 하나의 상태로 도착할 것이다. 이 점을 이용해서 BFS 탐색을 진행하면, BFS를 한번만 돌려도 문제를 풀수 있다! 추가로, 가중치가 동일할 때 최단 경로를 찾는 문제이므로, 가장 먼저 (N-1, M..

문제 문제 바로가기> BOJ 21608번: 상어 초등학교 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 풀이 문제를 풀 때 중요하다고 느낀 점을 몇가지 적어보겠다. 1. 자리를 정할 때 우선순위 별로 정렬하기 위해 priority_queue를 이용 * 이때, 구조체 내 연산자 재정의 방법을 알고 있어야 한다. (좋아하는 학생 수 > 빈칸 > 작은 행 번호 > 작은 열 번호) 우선으로 연산자 재정의를 해주어야 하기 때문! 2. 이미 자리가 정해진 경우 continue 해주기 이미 자리가 정해졌는데, ..

HTML(HyperText Markup Language) 이란? 웹 브라우저에 표시되도록 설계된 문서의 표준 마크업 언어 - HTML 문서라고도 불리며, HTML 태그들로 구성 - 각각의 HTML 태그는 웹 페이지의 디자인이나 기능을 결정하는데 사용됨 기본 태그 태그 의미 웹 문서의 유형을 html로 지정 문서를 html로 시작, 언어를 한국어로 지정 문서 구조 태그 태그 의미 헤더 영역 메인 영역 콘텐츠 영역 콘텐츠 영역 (독립적) 사이드 바 영역 푸터 영역 텍스트 입력 태그 의미 , , ... , 제목 (숫자가 작을수록 큼) 단락 줄 바꿈 (닫는 태그 없음) 인용문 (들여쓰기 적용) 텍스트 굵게 (주로 중요한 내용일 때) 텍스트 굵게 (단순히 굵게 표시할 때) 텍스트 기울임, (강조할 때, empha..

My SQL download 1. 아래 사이트로 들어가서, MySQL Community Server를 다운로드 받는다! 나는 인텔 cpu 여서, macOS 12 (x86, 64-bit) 를 다운 받았다. https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac..

문제 문제 바로가기> BOJ 23290번: 마법사 상어와 복제 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 풀이 문제를 풀 때 중요하다고 느낀 점을 몇가지 적어보겠다. 1. 배열 index 0 부터 시작할거면, 입력 시 위치, 방향 -1 해주기!! 2. 이동 못한 물고기는 제자리에 넣어주기 !! (`ismove` 변수를 이용해 찾지 못한 경우 제자리에 기존 방향으로 넣어주었다.) 안 그러면 물고기가 중간에 사라져 버리는 현상 발생 ^^ 3. 상어의 움직임 시뮬레이션할 때, ..