[백준] 10844 쉬운 계단 수 java
·
🍞 Problem Solving/Baekjoon
https://www.acmicpc.net/problem/10844 풀이 과정dp 파트가 약해서 정리해보고자 한다.문제를 요약해 보자면 ' N자리 수가 있을 때, 인접한 모든 자릿수가 1씩 차이씩 나는 수가 몇 개인지 구하는 것'이다. 여기서 유의해야 할 점은 다음 두 가지를 조심해야 한다. 1) N번째 자릿수의 자릿값이 0인 경우: 다음 자릿수의 자릿값은 1밖에 올 수가 없다.2) N번째 자릿수의 자릿값이 9인 경우: 다음 자릿수의 자릿값은 8밖에 올 수가 없다. 즉 10 다음에 붙을 수 있는 값은 1밖에 없으므로 101이 되는 것이고,만약 19가 온다면 8밖에 올 수 없으므로 198이 되는 것이다.그 외의 값 (2~8)은 각 값보다 -1 또는 +1 인 값을 가질 수 있다. 그럼 자릿값은 0~9를 가질..
[백준] 17471 게리맨더링 java
·
🍞 Problem Solving/Baekjoon
https://www.acmicpc.net/problem/17471 풀이과정먼저 문제에 대해서 간단히 설명해보자면 다음과 같이 그래프가 주어졌을 때2가지 구역으로 나눠서, 두 구역의 인구수 차이의 최솟값을 구하는 문제이다. 여기서 유니온 파인드 알고리즘을 생각할 수 있었다. 문제의 조건으로는각 구역은 1개 이상의 지역으로 이루어져야된다고 한다. (1) (2, 3, 4, 5, 6)(2) (1, 3, 4, 5, 6)....(1, 2) (3, 4, 5, 6)(1, 3) (2, 4, 5, 6)(1, 4) (2, 3, 5, 6)...(1, 2, 3) (4, 5, 6)(1, 2, 4) (3, 5, 6) 이런 식으로 2가지 구역이 나눠질 수 있어서지역의 개수 N개에서최소 지역의 개수인 1부터 최대 N / 2개까지 뽑..
[백준] 17406 배열 돌리기4 java
·
🍞 Problem Solving
https://www.acmicpc.net/problem/17406 풀이과정크기가 N X M 배열이 있을 때 각 행에 있는 모든 수의 합이 가장 최소일 때를 구하는 문제이다. 회전 연산이 세 정수 (r, c, s)로 주어지고가장 왼쪽 윗 칸 (r - s. c - s)가장 오른쪽 아래 칸 (r + s, c + s)정사각형을 시계 방향으로 한 칸씩 돌리면 된다. 예를 들어, 배열 A의 크기가 6×6이고, 회전 연산이 (3, 4, 2)인 경우에는 아래 그림과 같이 회전하게 된다. r = 3 c = 4 s = 2가장 왼쪽 윗 칸 (3 - 2, 4 - 2) = (1, 2)가장 오른쪽 아래 칸 (3 + 2, 4 + 2) = (5, 6)A[1][1] A[1][2] → A[1][3] → A[1][4] → A[1][..
SSAFY(삼성 청년 SW 아카데미) 앰배서더 초청행사 후기
·
🍞 SSAFY
안녕하세요 SSAFY(삼성 청년 SW 아카데미) 앰배서더 박예진 입니다.싸피에 대해 관심을 가지고 있던 중 싸피 공식 홈페이지를 통해 앰버서더 모집안내를 보고 지원하게 되었는데 잊고 있다 문자를 받았는데 합격을 받았습니다.싸피(SSAFY) 앰버서더란?SSAFY 엠배서더에 관해 간단히 알아보자면 SSAFY에 대한 관심을 가지고 있고, SSAFY에 대한 다양한 소식들을 다른 분들에게 전달하는 홍보 활동을 진행하는 홍보대사입니다.초청회에서 홍보활동 가이드 및 사례에 대해 친전하게 잘 알려주시고 분위기 또한 처음보는 사람들이었지만 어색함 없이 초청회가 진행되었습니다.혹시나 다음에 지원하실분들은 홍보활동에 대해 걱정하지마시고 일단 지원해보세요!!!초청회 당일초청회 시작 11시 전에 역삼 멀티캠퍼스로 갔더니 입구에..
[Algorithm] 2차원 누적합
·
🍞 Problem Solving
2차원 누적합으로 2차원 배열을 풀어보자.2차원 배열의 누적합도 1차원 배열의 누적합과 크게 다르지 않다. 1차원 배열에서 sum[N]은 1번째부터 N번째까지의 합을 나타냈다. 그럼 이차원 배열 sum[N][M]을 (0,0)부터 (N,M)까지의 합이라고 해보자.빨간 부분 (3, 3)부터 (5, 5)의 합을 어떻게 구할 수 있을까? prefixSum[5][5]는 (1,1)부터 (5,5)까지의 합을 나타내므로 해당 부분에서녹색 부분(prefixSum[2][5])을 빼주고, 노란 부분(prefixSum[5][2])을 빼주고, 두 번 빠진 녹색과 노란색이 만나는 부분(prefixSum[2][2])를 한번 더 더해주면 될 것이다.  그럼 (0,0)부터 (N,M)까지의 모든 위치의 값만 유효한 시간 내에 구할 수 ..
[Algorithm] DP 배낭 채우기 (Knapsack)
·
🍞 Problem Solving
도둑이 보석가게에 배낭을 메고 침입했다.배낭의 최대 용량은 W이며, 이를 초과해서 보석을 담으면 배낭이 찢어질 것이다.각 보석들의 무게와 가격은 알고 있다.배낭이 찢어지지 않는 선에서 가격 합이 최대가 되도록 보석을 담는 방법은? 배낭 채우기 문제는 다이나믹 프로그래밍의 유명한 유형이다.그중에서도 보석을 자를 수 있다고 가정하는 Fractional Knapsack 문제와자를 수 없다고 가정하는 0-1 Knapsack 문제가 있는데,전자보다는 후자가 주로 다루어진다. 0-1 Knapsack 문제는 다이나믹 프로그래밍이라는 방법을 쓰는 기본적인 문제로 알려져 있다.DP를 잘 모른다면 생각나는 방법은 두 가지 정도가 있을 것이다. 1. 모든 경우의 수를 넣어본다 (Brute-Force)n개의 보석이 있다고 치..
[JavaScript] 브라우저 렌더링 과정
·
🍞 Front-End/JavaScript
브라우저는 아마도 가장 많이 사용하는 소프트웨어일 것이다. 이 글을 통해 브라우저가 어떻게 동작하는지 설명하려고 한다. 이 글을 읽고 나면, 어떤 과정을 거쳐 페이지가 화면에 보이게 되는지 알게 될 것이다. 브라우저의 주요 기능브라우저의 주요 기능은 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시하는 것이다. 자원은 보통 HTML 문서지만, PDF나 이미지 또는 다른 형태일 수 있고, 자원의 주소는 URI(Uniform Resource Identifier)에 의해 정해진다.예) 최근 종료된 인터넷 익스플로러부터 파이어폭스, 사파리, 크롬, 오페라 등 브라우저는 HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구인 W3C(World Wide Web Conso..
[JavaScript] 클로저에 대해서
·
🍞 Front-End/JavaScript
클로저란?클로저는 자신이 선언될 당시의 환경을 기억하는 함수다. 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 해당 함수의 생명 주기가 종료되더라도 함수의 반환된 값이 변수에 의해 참조되고 있다면 생명 주기가 종료되더라도 (실행 컨텍스트 스택에서 제거되어 pop 되더라도) 렉시컬 환경에 남아 참조가 가능하다. 클로저를 사용하면 뭐가 좋은 거지?클로저는 상태를 안전하게 변경하고 유지하기 위해 사용한다.다시 말해, 상태가 의도치 않게 변경되지 않도록 상태를 은닉하고 특정 함수에게만 상태 변경을 허용하기 위해 사용한다. 클로저를 어떻게 생성하나요?1. 내부(중첩) 함수가 익명 함수로 되어 외부 함수의 반환값으로 사용될 때2. 내부(중첩) 함수가 외부 함수의 스코프에서 실행될 때3. 내부 함수에서..
[JavaScript] Event Bubbling, Capturing
·
🍞 Front-End/JavaScript
📌 이벤트 전파자바스크립트의 모든 DOM 요소 노드에서 발생한 이벤트는 DOM 트리를 통해 전파된다.사용자의 다양한 입력을 통해 동적으로 생성되는 이벤트 객체는 이벤트를 발생시킨 타깃을 중심으로 DOM 트리를 통해 전파된다. 전파되는 방향에 따라서 3단계로 구분할 수 있다. - 캡처링 단계: 이벤트 상위 요소 -> 하위 요소로 전파- 타깃 단계: 이벤트가 이벤트 타깃에 도달- 버블링 단계: 이벤트가 하위 요소 -> 상위 요소로 전파 브라우저는 기본적으로 이벤트 버블링 단계에서 이벤트를 캐치한다. 📌 이벤트 버블링 - Event Bubbling이벤트 버블링은 특정 화면 요소에서 이벤트가 발생했을 때 해당 이벤트가 더 상위의 화면 요소들로 전달되어 가는 특성을 의미한다.  아래 콘솔 창은 three cl..
[Softeer] Softeer 출퇴근길 c++
·
🍞 Problem Solving
DFS, 인접행렬, 역행렬을 사용하는 문제이다. Candidate | Softeer Assessment UI softeer.aiS -> T로 가는 경로가 존재해야 하고,T -> S로 돌아오는 경로가 존재해야 한다.fromS와 fromT만 사용하면 S -> T와 T -> S 경로를 독립적으로 찾게 되며, 이는 각각의 경로가 서로 다른 노드를 포함할 수 있다. 예를 들어, S -> T 경로가 포함하는 노드가 T -> S 경로와 일치하지 않을 수 있다. 그래서 역행렬이 알고리즘이 필요하다. fromS: S에서 출발하여 도달할 수 있는 모든 노드.fromT: T에서 출발하여 도달할 수 있는 모든 노드.toS: S로 도달할 수 있는 모든 노드 (역방향 그래프).toT: T로 도달할 수 있는 모든 노드 (역방향 그..