
스타일드컴포넌트로 감싸서 만든 자식컴포넌트에 이미 클래스네임을 지어줬을 때, 부모컴포넌트가 클래스 네임을 추가할 수 있을까? 💡 props로 넘겨서 추가해줄 수 있다. function RoundButton(props) { const leftPath = "왼쪽 화살표"; const rightPath = "오른쪽 화살표"; return ( ); } export default RoundButton; const StyledWrapper = styled.button`` StyledWrapper라는 StyledComponents로 감싼 RoundButton이라는 컴포넌트에 이미 move-button이라는 클래스 이름이 있다. move-button이라는 클래스 이름은 이 컴포넌트 외부에서 RoundButton 컴포넌..

자바스크립트로 html DOM을 조작하는데 필요한 기본적인 명령들. 새로운 요소 추가하기 (Create) createElement() 새로운 요소를 생성한다. const addDiv = document.createElement("div"); node.before(), node.after() 호출한 노드 앞, 뒤에 새로운 노드를 추가한다. a.after(addDiv); a.before(addDiv); textContent = 요소에 text 내용을 추가한다. addDiv.textContent = "내용을 추가합니다."; classList.add() 요소에 클래스를 추가하다. addDiv.classList.add("newClass"); Node.append() 생성한 요소를 원하는 요소에 추가한다. Node..

text의 길이가 특정 범위를 넘어가는 경우에 뒷 글자들이 잘려 없어지고 ...이 붙은 경우를 본 적 있을 것이다. CSS를 이용해서 이런 말 줄임표를 만들 수 있다. 페이지를 만들다 보면 은근히 자주 말 줄임표가 필요한 상황들이 생긴다. 여러 줄로 줄이는 경우 h1 { width: 300px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } width : 300px : text가 차지할 영역을 정해줘야한다. width는 부모 엘리먼트나 대상 엘리먼트에 적용한다. overflow: hidden : 영역을 넘어가는 text를 보이지 않게 한다. display: -webkit-box : ..

DOM이란? DOM(문서 객체 모델)은 The Document Object Model의 약자로, HTML, XML 문서의 프로그래밍 인터페이스이다. DOM은 HTML, XML 의 구조화된 표현을 제공하며 프로그래밍 언어가 DOM구조에 접근하여 문서 구조, 스타일, 내용 등을 변경할 수 있도록 돕는다. HTML 문서가 브라우저에 로드되면 브라우저는 문서 내용을 파싱하여 브라우저가 이해할 수 있는 객체 모델로 변환한다. 이렇게 변환된 객체 모델을 DOM이라고 하는 것이다. DOM은 HTML 문서의 각 요소를 객체로 나타내며, 이 객체들은 상호 연관된 계층 구조를 갖는다. 이런 DOM 객체들은 JS와 같은 클라이언트 사이드 스크립트 언어를 통해 동적으로 조작할 수 있다. 예를들어 DOM을 이용하여 HTML 문..

프로그래머스 [2023 KAKAO BLIND RECRUITMENT] 개인정보 수집 유효기간 파이썬 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/150370 풀이 먼저 날짜와 관련된 모듈을 이용해서 풀어봐야겠다는 생각을 하였다. 문자열을 날짜로 바꾸는 방법 특정 날짜의 n개월 후 날짜 구하는 방법 날짜와 날짜끼리의 대소 비교 방법 순으로 생각을 해보았다. 첫번째로 문자열을 날짜로 바꾸는 방법은 datetime이라는 내장 모듈의 strptime을 사용하였다. 다음으로 특정 날짜의 n개월 후 날짜 구하는 방법은 dateutil 모듈의 relativedelta 함수를 이용했는데, 프로그래머스에서 돌아가길래 내장 모듈인 줄 알았는데 외장 모듈이었다...

https://www.acmicpc.net/problem/2943 2943번: 토끼 상근이는 토끼 N마리를 키우고 있다. 그는 매일 매일 토끼에게 다양한 야채와 과일을 먹이로 주고 있었다. 그러나, 상근이의 토끼는 딸기를 가장 좋아한다. 하지만 겨울에는 딸기를 구하기가 매 www.acmicpc.net 풀이 일단 문제를 잘 이해해야한다. "그날 성냥을 넣은 성냥갑과 컵에 들어있는 성냥의 수를 구하는 프로그램"이라고 문제에 명시되어있지만, "그날 넣은 성냥"의 개수를 세는 것으로 착각하기 쉬운 문제이다. 그날 넣은 성냥의 개수를 세는 것으로 착각했다면 아마 출력 예시를 보고 당황했을 것이다. 문제를 잘 읽어보고 헷갈릴 만한 내용들을 정리해보았다. m일간 컵과 성냥갑은 공유된다. 초기화 되는 것이 아니다. 같..

https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 풀이 입력값의 최대 길이가 50이고 제한시간이 2초라서 브루트포스로 풀 수 있는 문제이다. 문제의 지시에 따라 코드를 구현하면 된다. 입력 받은 단어를 세 단어로 나눈다. 나누어진 단어들을 뒤집는다. 나누었던 세 단어를 한 단어로 합친다. 만들어진 단어를 list에 저장해두었다가 정렬하여 가장 첫번째 있는 단어를 출력한다. 나는 단어를 세부분으로 나누면서 revesed()함수를 사용하여 문자열을 뒤..

20230201 부터 20230206 까지 푼 백준 문제들 1041 주사위 완성된 정육면체는 큐브 모양이며 맨 아래면은 보이지 않음 큐브를 이루는 블록들의 겉으로 보여지는 면은 1, 2, 3개 중 하나 면이 1개 보이는 블록 개수 = 4 * (n - 2)(n - 1) + (n - 2)(n - 2) 면이 2개 보이는 블록 개수 = 4 * (n - 2) + 4 * (n - 1) 면이 3개 보이는 블록 개수 = 4개 (가장 상단 모서리 4개) 주사위는 마주보는 면을 제외하고 모든 면이 인접 따라서 마주보는 면 중 최소를 찾아 리스트 저장 리스트에 저장된 세 값으로 결과 구하기 3079 입국심사 입력 값의 범위와, 최소 시간을 구한다는 문제 내용을 보고 이분 탐색을 떠올렸다. 일단 이분 탐색인 것 같은데, 어떤..
1. 백준 2156 포도주 시식 포도주를 연속 세잔이상 마시는게 불가능 하다는 조건을 보고 DP로 풀어봐야겠다는 생각이 들었다. DP 배열을 만들어서 1부터 n잔 까지 각각 최대로 마실 수 있는 양을 저장하면 되는데.. 현재 최대값을 구하기 위한 이전 값들의 조건을 제대로 못구해서 시간을 많이 썼다. dp[i] = max( dp[i-2] + wine[i], dp[i-3] + wine[i-1] + wine[i], dp[i - 1]) dp[4] = max( dp[2] + wine[4], dp[1] + wine[3] + wine[4], dp[3] ) 이전 DP값 전전 DP값 + 자기 자신 전전전 DP값 + 이전 값 + 자기 자신 주의할 점이 있는데, dp 배열의 인덱스 0 부터 값을 넣어 사용하면 ****(d..
1. 백준 1149 RGB거리 맨 처음 집을 Min()으로 최소값을 구한 후, 풀어보려다가 26 40 83 01 60 57 30 02 50 이런 경우에는 맨 처음 집을 무조건 최소값을 고르는게 아니라는 것을 발견했다. DP로 풀면 될 것 같다는 생각이 들었고, 고정 값이 어디일까를 고민해보았다. n이 최소 2이고 문제에서도 i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 라고 되어있으니 구할 수 있는 정확한 값은 가장 첫번째 값이 아니라 두번째 값 부터겠구나 싶었다. 비용을 입력해둔 배열을 재활용 해서 각각의 집에 대해 이전 집의 빨, 초, 파 값과 다음 집의 빨, 초, 파 값 중 작은 것을 찾고 자기 자신의 빨, 초, 파 비용을 더해나가는 식으로 구현 마지막 집..

사전 지식 - 스택, 큐, 재귀 함수에 대해 알고 있어야 합니다. 나중에 관련 블로그 글을 쓰게 된다면 수정하겠습니다. 💡그래프 탐색이란? - 그래프 코드로 구현하기 DFS/BFS 알고리즘은 그래프 탐색에 사용되는 알고리즘입니다. DFS/BFS에 대해 알아보기 전에 그래프 탐색이 무엇인지 알아야겠지요. 그래프는 정점(node)과 간선(edge)로 이루어진 자료구조를 의미합니다. 쉽게 정점은 도시들로, 정점을 연결하는 간선은 도시와 도시 사이를 이어주는 도로라고 생각해봅시다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말합니다. 그리고 두 노드가 간선으로 연결되어있는 것을 '두 노드는 인접하다.'라고 표현합니다. 위에서는 그림을 그려서 그래프를 표현했는데요, 그렇다면 알고리즘 문제..

💡 그리디 알고리즘 (Greedy Algorithm) 이란? 그리디 알고리즘은 어떤 문제를 '탐욕적'으로 푸는 알고리즘입니다. 여기서 '탐욕적'이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미합니다. 즉, 선택을 해야 할 때마다 당장 눈앞에 놓인 최적의 상황만을 선택하여 해답에 도달하는 방법입니다. 최적의 상황에 대한 기준이 필요하므로, 그리디 알고리즘으로 풀 수 있는 문제들은 '가장 큰 순서대로', '가장 작은 순서대로 '같은 기준을 알게 모르게 제시해 줍니다. 대체로 이 기준은 정렬 알고리즘을 사용했을 때 만족시킬 수 있습니다. 순간마다 하는 최선의 선택이 늘 최선의 결과를 보장해주지는 않습니다. 아래의 예시 그림에서, 선택지들을 합한 가장 큰 수를 찾는다고 가정해보겠습니다. 이..