전체 글 481

[TIL] CSS 전처리기를 사용하는 이유

프로젝트를 하면서 SASS를 처음 사용하게되었다. 아직까지 굳이 CSS가 아닌 SASS를 사용해야하는 필요성을 느끼지 못했다. 이번 기회에 SASS를 공부하고 익숙해지면서 SASS의 장점을 파악할 수 있는 좋은 기회라고 생각한다. 이를 위해 먼저, CSS 전처리기의 개념과 사람들이 많이 사용하는 이유를 알아보았다. CSS 전처리가 무엇일까? MDN에서는 자신만의 특별한 syntax를 통해 CSS를 생성하는 프로그램이라고 한다. 이를 위해 믹스인, 중첩 셀렉터, 상속 셀렉터 등을 사용할 수 있다고한다. CSS 전처리기는 CSS를 사용하면서 불편한점을 해결하기위해 탄생하였고 CSS를 쉽게 작성하고 다른 사람들이 쉽게 이해할 수 있도록하기 적합하다. CSS의 불편한 점은? 구조가 복잡하고 큰 서비스를 개발할 ..

Today I Learned 2021.07.28

[SWEA 5653] 줄기세포배양

접근 X시간 비활성화 상태 -> X시간동안 활성화 -> 죽음, 활성화 후 1시간 동안 번식을 한다고 한다. 이를 구현하기 위해 다음과같이 접근하였다. 만약 X = 2 라고 해보자. X에 2를 곱하면 4가 되고 4초 = 초기상태 3초 = 비활성화 2초 = 활성화 1초 = 활성화 및 번식 0초 = 죽음 위와 같이 X에 2를 곱하면 X - 1이 되는 시점에 번식이 이루어진다. 이렇게 비활성화 -> 활성 -> 번식을 구현하였다. 이제는 동시에 같은 곳에 번식을 하려고할 때 X가 큰 것이 오도록 해야한다. 이를 위해 X순으로 내림차순 정렬 후에 X가 큰 것부터 처리하도록 하였다. 이를 통해 먼저 처리가 되어있거나 이미 줄기세포가 있다면 continue가 진행되어 더 낮은 X는 같은 곳에 번식이 되지 못하도록 구현..

[백준 16916] 부분 문자열

문제 문자열 S의 부분 문자열이란, 문자열의 연속된 일부를 의미한다. 예를 들어, "aek", "joo", "ekj"는 "baekjoon"의 부분 문자열이고, "bak", "p", "oone"는 부분 문자열이 아니다. 문자열 S와 P가 주어졌을 때, P가 S의 부분 문자열인지 아닌지 알아보자. 입력 첫째 줄에 문자열 S, 둘째 줄에 문자열 P가 주어진다. 두 문자열은 빈 문자열이 아니며, 길이는 100만을 넘지 않는다. 또, 알파벳 소문자로만 이루어져 있다. 출력 P가 S의 부분 문자열이면 1, 아니면 0을 출력한다. 접근 kmp 알고리즘을 적용하여 부분 문자열을 찾았다. 인덱스 i는 S, 인덱스 j는 P를 가리킨다고 했을 때 S의 길이만큼 i가 순차적으로 증가한다. j는 0부터 시작하여 S[i] == ..

[Git] branch에 대한 정리

다른 사람들과 함께 프로젝트를 하면서 branch를 나눠서 작업하게 되었다. 이 과정에서 몇 가지 이해되지 않은 점들이 있었고 git에 대해 완벽하게 이해하고 다룰 수 있어야 협업 능력이 향상될 수 있다고 생각했다. A라는 branch를 생성 후에 할당된 작업을 완료 후에 push를 진행하였다. 하지만 main 브랜치로 merge가 되지 않은 상태에서 다른 작업을 위해 B라는 branch를 생성 후에 작업을 시작했다. 이때 A에서 작업한 것을 B에서 필요하다면 어떻게 해야하는지 의문점이 생겼다. 아직 팀원들도 명확한 답을 알지 못했다. 따라서 branch에 대해 정확하게 이해한 후에 위의 의문점에 대한 해답을 찾고 팀원들에게 공유하고자 한다. Branch가 무엇일까? 원격 저장소를 생성 후에 main 또..

Git 2021.07.27

[SWEA 2115] 벌꿀 채취

접근 두 명의 일꾼이 각각 가로로 연속으로 M개의 벌통을 선택한다. 이때 두 명의 일꾼이 선택한 벌통이 겹치면 안된다. => 이는 2차원 리스트의 완전탐색을 통해 두 명의 일꾼이 벌통을 선택하는 경우의 수를 구할 수 있을 것이다. 선택한 M개의 벌통 중에서 가중치가 가장 큰 것을 찾아야한다. 예를 들어 5, 5, 9 벌통을 선택했고 C가 10이라고 하자. 그렇다면 최대 수익을 위해 5, 5가 아닌 9를 선택해야한다. => itertools의 combinations를 활용하여 선택한 벌통 중에 최대수익을 찾는다. 구현 - 벌통을 2개 선택했을 때 최대수익을 구한다. - 두 명의 일꾼이 선택한 벌통(storage[0], storage[1])에서 combinations를 통해 최대수익을 구한다. - 이를 re..

[백준 1786] 찾기

https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m www.acmicpc.net 접근 문자열 패턴을 찾는 알고리즘인 KMP를 공부하기위해 위의 문제를 풀었다. 일단 지금까지 KMP 알고리즘을 다음과같이 이해했다. 문자열 S에서 패턴 문자 P를 찾는다고 하자. 이를 S의 처음부터 탐색하고 다른 문자가 나왔을 때 다시 P의 처음부터 탐색을 하면 불필요한 중복이 발생한다. 따라서 P에서 각 인덱스까지의 문자까지 (ABCD가 있을 때 A, AB, ABC, ABCD) 최대 접미사..

[React] Life Cycle

리액트로 컴포넌트를 개발했다면 각 컴포넌트에는 Life Cycle이 존재한다. Life Cycle를 이해하고 있어야 효율적으로 컴포넌트를 개발하고 적용시킬 수 있으며 디버깅도 좀 더 쉽게 할 수 있다고 생각한다. 이전에 Life Cycle에 대한 개념을 알지 못했을 때 데이터가 업데이트 되었지만 적용이 되지 않은 문제 등을 겪었다. 리액트를 통해 Life Cycle에 대한 개념과 관련 메서드, Hook 등을 알아보자. Life Cycle Life Cycle은 컴포넌트가 생성되고 제거될 때까지의 과정을 의미하며 각 과정에 따라서 생명주기 메서드가 순서대로 호출된다. 먼저 아래의 그림과같이 크게 3가지로 Life Cycle을 나눌 수 있다. Mount : 컴포넌트에 대한 인스턴스가 생성되고 DOM 구조에 삽..

React 2021.07.23

[네트워크] 프록시 서버를 사용하는 이유

프록시 서버가 무엇일까? 프록시 서버는 클라이언트와 서버 사이의 중계역할을 한다. 클라이언트가 서버에 직접적으로 데이터를 요청하지않고 프록시 서버에 요청을 한다. 프록시 서버는 클라이언트의 요청을 서버에 전달한 후에 받은 데이터를 클라이언트에 전달한다. 프록시는 포워드 프록시, 리버스 프록시가 존재한다. 이는 프록시 서버를 어디에 위치시키느냐에 따라 달라지는데 클라이언트 측에 위치시키는 것을 포워드 프록시, 서버 측에 위치시키는 것을 리버스 프록시라고 한다. 포워드 프록시는 아래의 그림처럼 표현할 수 있으며 일반적으로 포워드 프록시를 프록시라고 한다. 브라우저에서 구글검색을 하면 프록시 서버에서 데이터를 받아 서버에 요청 후에 값을 돌려준다. 이러한 방식은 대역폭을 감소시키고 서버가 어떤 클라이언트가 요..

CS/네트워크 2021.07.21

[SWEA 2117] 홈 방범 서비스

첫 번째 접근 모든 위치에 대해 BFS를 진행하였다. BFS를 하면서 집의 개수를 카운트하였고 집의 개수 x M이 운영비용보다 같거나 클 때 최댓값 비교를 진행했다. PASS는 되었지만 시간이 오래 걸렸고 불필요한 곳까지 탐색한다는 것을 알았다. 첫 번째 구현 - K를 N+1 ~ 1까지 탐색하면서 모든 좌표에 대해 BFS를 진행한다. - BFS는 현재 위치를 기준으로 거리를 통해 방문표시를 한다. - 거리가 K이하일 때만 큐에 넣어 다음 위치를 탐색할 수 있도록 하였다. => 마름모 형태 - 이후 현재 위치가 집일 경우 집의 개수인 count를 증가시켰다. - BFS가 종료되고 count x M이 운영 비용보다 크거나 같을 때 최댓값 비교를 한다. from collections import deque d..

[백준 1593] 문자 해독

문제 마야 문자를 해독하는 일은 예상 외로 어려운 일이다. 현재에도 뜻이 완전히 밝혀진 마야 문자는 거의 없는 실정이며, 그나마 해독에 진척이 시작된 지는 30여 년도 되지 않았다. 마야 문자는 소리를 나타내는 여러 종류의 그림글자로 구성되는데, 이 글자들이 여러 위치에서 결합함으로써 단어를 형성한다. 마야 문자 해독을 어렵게 하는 요인 중 하나는 바로 단어를 읽는 순서이다. 마야 문자를 쓰는 고대인들은 단어를 기록할 때 특정한 규칙 대신, 그들이 보기에 좋게 보이도록 단어를 이루는 글자들을 아무렇게나 배열했다. 그렇기 때문에 고고학자들이 마야 기록에서 단어를 이루는 각 그림글자들의 발음을 알아내더라도 그 단어를 실제로 발음하는 방법은 정확히 알 수 없는 셈이다. 고고학자들은 W라는 특정 단어를 발굴 기..

728x90
반응형