전체 글 181

[Python/파이썬] 백준 알고리즘 9184번 - 신나는 함수 실행 (DP)

1. 아이디어 재귀 호출로 인한 시간복잡도를 줄여줄 수 있는 DP를 이용해야한다. 3차원 배열로 memoization을 만들면 되지 않을까..? 20 * 20 * 20의 공간만 있으면 된다. 2. 시간복잡도 - O(n^3) : 20 * 20 * 20 = 8000 -> 가능 3. 자료구조 a, b, c: int; dp: int[][][]; 전체코드 ↓ import sys sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline def w(a, b, c): if a 20: return w(20, 20, 20) elif dp[a][b][c]: return dp[a][b][c] elif a < b < c: dp[a][b][c] = w(a, b, c-1) + w(a,..

[Python/파이썬] 백준 알고리즘 15649번 - N과 M (1) (BackTracking)

1. 아이디어 for문으로 1부터 N까지 돌리면서 이미 선택한 값이 아닌 경우 선택 M개 선택하는 경우 출력하고 return 하나의 리스트를 사용할 것이고 return해서 위 depth로 올라왔을 때 그대로 append만 하면 기존 리스트의 옆에 붙을테니 백트래킹 방식으로 return할 때 리스트 맨 끝을 지워주는 처리를 해줘야함. 2. 시간복잡도 - BackTracking - 중복이 가능한 경우 : O(N^N) (N = 8까지 가능) (시간제한 1초인데 1초에 2억까지 처리가능하므로) - 중복이 불가능한 경우 : O(N!) (N = 10까지 가능) - 중복이 불가능하면 depth가 깊어짐에 따라 N개에서 하나씩 줄어드니까 N!인 것 3. 자료구조 N, M: int; result = int[]; visi..

[Python/파이썬] 백준 알고리즘 7576번 - 토마토 (BFS)

1. 아이디어 bfs로 queue를 만들고 1인 지점부터 시작해서 queue에 넣고 pop하길 반복한다. 처음 시작할 때 1인 지점을 몽땅 queue에 넣어두고 시작한다. 처음 1인 곳이 여러곳일 수 있다. 그래서 queue에 있는걸 다 처리하게 해야한다. 따로 if문을 두고 break하지 않는다. 마지막에 이중포문 돌리면서 익지못한 토마토(0)가 있는지 확인 없다면 가장 큰 숫자 출력 2. 시간복잡도 - BFS : O(V + E) - V : 1000 * 1000 - E : 4 * 1000 * 1000 - V + E : 5 * 1000 * 1000 = 5e6 (5백만) - 이중포문 : O(NM) - NM : 1000 * 1000 - 전체 시간복잡도 : O(6NM) = 6e6 (6백만) - 2억보다 작으므..

[Python/파이썬] 백준 알고리즘 11729번 - 하노이 탑 이동 순서 (recursion)

하노이 탑의 해결 방법을 생각해보면 재귀적이다. 위의 gif처럼 1~6번 원판을 첫 번째 장대에서 세 번째 장대로 옮기기 위해서는 먼저 1~5번 원판을 두번째로 옮긴 후 6번 원판을 세 번째 장대로 옮겨야한다. 이렇게 되면 문제는 1~5번 원판을 두 번째 장대에서 세 번째 장대로 옮기는 문제로 바뀐다. 즉, 재귀는 자기보다 작은 규모의 문제를 먼저 해결하고 그것을 자기의 문제에 이용하는 것이다. 재귀는 Base Case + Recursive Case로 이루어져있다. Base Case는 if문 안의 부분이며 바닥에 닿았을 때 재귀를 끝내는 경우이다. Recursive Case는 else 안의 부분이며 재귀적으로 반복하게 하는 경우이다. 위 용어를 바탕으로 정리하면, 1. Recursive Case의 경우 ..

[Python/파이썬] 백준 알고리즘 1260번 - DFS와 BFS

정점과 간선은 Graph에서 나오는 개념들이다. 정점은 흔히 Vertex라고 부르며 간선은 Edge라고 부른다. 전체 풀이 ↓ import sys from collections import deque N, M, V = map(int, sys.stdin.readline().rstrip().split()) graph = [[0] * (N + 1) for _ in range(N+1)] DFS_visited = [False] * (N + 1) BFS_visited = [False] * (N + 1) for _ in range(M): x, y = map(int, sys.stdin.readline().rstrip().split()) graph[x][y] = 1 graph[y][x] = 1 def dfs(V): DF..

[React / Styled Component] 스타일 컴포넌트 props 사용하는 법 (typescript)

interface MemberInfoTextProps { isBold: boolean; fontSize: string; fontColor: string; textAlign: string; } export const InfoText = styled.p` font-weight: ${props => props.isBold ? "bold" : "normal"}; font-size: ${props => props.fontSize}; color: ${props => props.fontColor}; text-align: ${props => props.textAlign}; ` 위와 같이 interface로 props의 속성들을 정의해주고 괄호 안에 이 interface를 넣습니다. 그리고 ${}로 props를 받은 뒤..

Front-End/React.JS 2022.02.24

[React] Material UI Typography 폰트 적용하기 (Material UI font custom) (구글 웹 폰트 적용하는 법)

1단계 : 구글 폰트 웹 사이트 접속하기 https://fonts.google.com/ Google Fonts Making the web more beautiful, fast, and open through great typography fonts.google.com 위 사이트에 접속해 원하는 폰트를 선택한다. 2단계 : 폰트 검색해서 찾기 맘에 드는 폰트를 찾아서 들어간다. 그리고 스크롤을 내려 Styles 탭에서 px을 조절하며 맘에드는 스타일을 고른다. 그리고 오른쪽에 있는 Select this style을 클릭한다. 3단계 : 폰트 스타일 복사하기 그럼 옆에 나오는 창에서 @import를 클릭한 후 아래 두 코드를 복사해둔다. 4단계 : HTML, CSS 파일에 붙여넣기 먼저 App.css 파일에..

Front-End/React.JS 2022.02.20

[CSS] CSS 지엽정리

1. 실무에서 relative 속성은 특정 요소의 위치를 배치하는 것보다 absolute 속성의 기준점을 설정하는 용도로 많이 사용한다. 2. transform의 3D속성을 이용할 때 부모 태그의 perspective 속성은 원근감을 지정하는 것이다. z축으로 얼마나 떨어져서 볼 것인가를 결정하는 속성이라고 이해하면 된다. (그래서 자식 태그의 z-index를 100px로 하고 부모 태그의 perspective를 90px로 하면 자식 태그가 보이지 않게 된다. 왜냐하면 자식태그가 존재하는 곳보다 더 안쪽으로 보는 것이기 때문에) 3. box-sizing 속성을 이용하면 기존 박스의 크기를 유지하면서 안쪽 여백을 지정할 수 있다. padding 속성을 추가하면 기존의 박스 크기가 지정한 너빗값과 높잇값보다..

Front-End/HTML&CSS 2022.02.12

[CSS] padding으로 가운데 정렬 시키기

padding: 0.5rem calc((100vw - 1000px) / 2); 위 식으로 가운데 정렬을 시킬 수 있다. 0.5rem은 위아래 패딩이니 상관없고 핵심은 calc((100vw - 1000px) / 2)이다. calc() CSS함수를 사용하면 CSS 속성의 값으로 계산식을 지정할 수 있다. vw는 vw = viewport width로 현재 실행중인 스크린 크기에 맞춰 상대적 크기를 반환한다. 100vw가 전체 화면의 기준이 된다. 따라서 100vw는 전체 화면에서의 width값이고 거기서 1000px만큼을 뺀 값을 2로 나누어 이를 좌우 패딩으로 삼는다는 것이다. 이를 정리하면 calc((100vw - (사용할 공간 크기) / 2)로 사용하면 된다.

Front-End/HTML&CSS 2022.02.10
반응형