[C++ / 1074] Z
·
Algorism(PS)/백준
문제 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 문제 설명 크기가 2N x 2N 인 2차원 배열을 Z모양으로 탐색하려고 한다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 풀이 방식 해당 문제는 분할 정복과 관련된 문제이다. 배열을 Z 모양으로 다음과 같이 탐색순서가 매겨진다. n = 2 일때의 그림을 잘 살펴 보면 Z는 일정한 범위를 순차적으로 탐색하고 있다. 그래서 이를 Z의 탐색순서 대로 1~4사분면으로 쪼갠뒤 (5,3)을 방문할때의 탐색순서를 찾으..
주니어 프론트 개발자의 Storybook 경험담
·
활동/Poom (ZeroWasteShop)
2023년 전반기에 Poom이라는 서비스를 개발하면서 이것저것 프론트엔드 개발을 편리하게 해주는 기술들을 써 보았는데, 그중에 Storybook을 써본 경험담을 작성해 보려고 한다. 이번 경험을 통해 프론트 개발 전, 디자인 시스템을 구축하는 것이 효과적인 개발을 할 수 있게 해준다는 것을 깨달은 것 같다. 그렇다고는 해도 아직 프론트 업계에 물들지 않은 초심자가 간단하게 만져보고 쓰는 글이다. 우선 Storybook 이란? 컴포넌트 단위의 UI 개발환경을 지원하는 도구이다. 여러 컴포넌트 UI 들을 문서화하여 여러 정보들을 보기 편하게 만들어 준다. 다양한 프론트엔드 웹 프레임워크(React, Vue, Angular 등등)에서 지원한다. Storybook 사용법 내가 작성해두는 것보다 여러 참고하기 ..
방학 한 달 남짓 동안 달릴것
·
생각
나중에 얼마나 성취했는지 되돌아 보기 위한.. 글 1순위 - 블로그 1일 1포스팅 다시 예전에 바쁘다는 핑계로 놓았던 블로그를 다시 빡세게 해보기 우선 저번 방학때 했던 프로젝트와 학기중에 나에게 있었던 변화들에 대해서 쓰기 다음 알고리즘과 1일 1백준 포스팅하기. 2순위 - 백준 1일 1문제 엄청 큰 사정이 있지 않고서는 1일 1백준 하기. 그리고 알고리즘과 친해지기. 3순위 - 기회 파악해두기 인턴이나 해커톤, 외주 관련된 정보를 모아두고 다음 방학이나 학기중에 하기.
[C++ / 1629] 곱셈
·
Algorism(PS)/백준
문제 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 설명 자연수 A를 B번 곱한 수를 알고 싶다. 단, 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오. 풀이 방식 이 문제는 pow를 직접 구현하는 문제이다. 처음에는 cmath 라이브러리에 있는 pow를 %로 나누어서 답을 내면 되겠다~ 했는데 자료형 이슈로 안되었고 했어도 아마 시간문제로 인해서 안되었을 것 같다. 당연히 for문을 통해서 구현 하더라도 연산 횟수가 많아서 안됬을 것이다. 그래서 이번 풀이에는 분할 정복의 개념이 사용되었다. 예를 들어, 짝수일 때는 $$A^{4} ..
[C++ / 2075] N번째 큰 수
·
Algorism(PS)/백준
문제 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제 설명 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5 일때의 예제를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하여라. 표에 채워진 수는 모두 다르다. 풀이 방식 문제 자체는 이해하는데 있어 어렵지 않다. 쉽게 변..
분할 정복 (Devide & Conquer)
·
Algorism(PS)/알고리즘 정리
분할 정복 (Devide & Conquer) 이란? 한 번에 해결할 수 없는 문제를 작은 문제로 분할하여 해결하는 알고리즘. 분할하여 푼 문제들을 다시 합병하여 문제의 답을 얻음 주로 재귀함수로 구현하여 나눌수 없는 순간까지 나눔. 분할 방법에 따라 시간 복잡도는 천차만별. 구현 방법에 따라 시간 복잡도가 다양하다. 입력범위 N이 큰 편이다. 재귀 함수를 구현할 때에는 무한루프에 빠지지 않도록 기저조건을 확실히 해야한다. 분할 정복의 순서 Devide: 문제가 분할이 가능한 경우, 2개 이상의 문제로 나눈다. Conquer: 나누어진 문제에 대해서 해결을 한다. 만약 더 쪼개질 수 있다면 Devide과정을 수행한다. Combine: Conquer한 문제들을 통합하여 원래 문제의 답을 얻는다. 문제를 제대..
[C++ / 11057] 오르막 수
·
Algorism(PS)/백준
문제 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 문제 설명 오르막 수는 수가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. - 가능: 2234, 3678, 11119 - 불가능: 2232, 3676, 91111 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하라. 0으로 시작가능. 풀이 방식 다음 이미지대로 하면 된다. 이게 DP의 방식 인지는 모르겠는데.. 이전의 값을 가지고 와서 현재의 값을 만들어 낸다. 다음..
그리디 알고리즘 (Greedy Algorithm)
·
Algorism(PS)/알고리즘 정리
그리디 알고리즘 (탐욕 알고리즘) 이란? Greedy는 '탐욕스러운, 욕심 많은' 이라는 뜻이다. 그리디 알고리즘은 선택하는 순간마다 당장 최적의 상황만을 선택해 최종적인 해답에 도달하는 방법이다. 그리디 알고리즘은 최적의 해를 구하는 데에 사용되는 근사적인 방법이다. 순간마다 선택하는 답은 그 순간에서는 지역적으로 최적의 답일 순 있지만, 그 선택들을 계속 수집하여 나온 최종적인 답은 최적이 아닐 수 있다. 시간적으로 매우 효율적임. 수학적 증명이 요구되는 사항이 많음. 코딩 테스트의 경우 비슷한 문제나 직관에 의해 판단 할 수 있도록 문제가 주어짐. 그렇기에 많은 문제를 풀어서 감을 익힐 수 있도록 해야함. 예시 루트 노드 7에서 시작해서 10과 12의 대소관계를 파악한다. 더 큰 12를 택한 후 다..