전체 글 114

[이론] JS - 문서 객체 모델(DOM)

DOM은 JS언어의 일부가 아니며, JS로 HTML 문서를 조작하기 위한 모델이다. 즉 JS로 HTML을 조작하는데, 이것을 Document Object Model을 통해서 변경한다. HTML은 Node로 가득한 문서이다.(HTML의 요소 하나하나가 Node이며 트리구조다.) DOM 또한 노드들이 트리 구조로 구성되어있다. JS에서 특정 HTML 속성들을 가져오는 방법에는 여러가지가 있는데, document.getElementById document.getElementsByClassName document.getElementsByTagName 이 세가지가 고전적인 방법이며 각각 id, class, tag를 가져오는 방법이다. 이 모든 요소를 가져올 수 있는, 비교적 최근에 나온것이 바로 querySele..

[백준] 1912 - 연속합(DP) - (python 파이썬)

문제링크 : https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이과정 : 동적프로그래밍은 몇번을 풀어봐도 점화식 찾아내는것이 쉽지않다. DP의 다른 유형 문제와 다른 부분이 있어 연속합이라는것이 계속 이어지지 않고, 특정시험에서 값을 비교하여 그 이전까지는 손절(?) 치는 방식이라, dp[i] = sum(dp[i-1] + lst[i], lst[i]) 즉 이득이 되는곳 까지 끌고가다가 dp[i-1]이 음수가 되는순간 lst[i]로 갈아타는 방식의 점화식이다..

Coding/백준 2022.02.28

[백준] 2193 - 이친수 - (python 파이썬)

문제링크 : https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이과정 : 전형적인 dp 문제인데, 처음에는 그 과정도 안보이고 점화식도 안보여서 고생했다. 10으로 시작하면서 101부터 시작은 dp[i-2]와 개수가 같고 100부터 시작은 dp[i-1]과 개수가 같다. 그러므로 초기에 자리수가 1,2,3 인 경우만 설정값으로 넣어주고, 나머지는 점화식 dp[i] = dp[i-2] + dp[i-1] 로 풀면 된다. dp = [0, 1,..

Coding/백준 2022.02.26

[백준] 1697 - 숨바꼭질(BFS) - (python 파이썬)

문제링크 : https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이과정 : 처음에는 동적프로그래밍으로 접근해보다가 빙빙 돌다가,, BFS 알고리즘임을 알게되었고, BFS를 다시 공부하고 풀었다. 가장 기본적인 BFS 문제이며, 파이쎁 같은 경우 BFS는 양쪽 입출력이 모두 가능한 덱으로 구현해야한다. 코드리뷰를 하자면, 범위 값을 잡아주고 범위 안의 방문처리 리스트(몇번 이동이 있었는지)를 만들어준다. 그 뒤로 덱의 왼..

Coding/백준 2022.02.17

[진행중] [Challenge] 유튜브 클론코딩 +JS(반응형)

당근마켓, 인스타그램 클론코딩에 이어서 이번엔 유튜브를 구현해보고자 한다. 또 이번엔 반응형으로 만들어볼 계획이다. Night-mode / Day-mode 버튼 구현 동영상 마다 onmouse 했을때 확대, 클릭시 이동하여 동영상 재생 매번 다르게 나오는 fixed 광고창 구현 현재시간, 위체에 따른 날씨 구현 HTML + CSS만 써오던 기존 과제들과 달리, 자바스크립트도 당연히 이용해야 하며, 앞에 완성해놓은 페이지들도 반응형으로 바꿀 예정이다. 예상소요시간 : 4시간 ~ 5시간 내외

[백준] 11576 - Base Conversion - (python 파이썬)

문제링크 : https://www.acmicpc.net/problem/11576 11576번: Base Conversion 타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 www.acmicpc.net 풀이과정 : 먼저 A 진법의 수를 각 자리마다 * pow(A, 지수)를 곱한뒤 total에 합산하여 10진법의 수로 변환해주었다. 그 후, 10진법 수를 기준으로 B진법으로 몇자리 수인지부터 while 문을 통해 구하고, 10진법을 pow(B, 지수)로 큰 수부터 차례로 분해하여 리스트에 차수를 저장해주었다. import math A, B = map(int, inpu..

Coding/백준 2022.02.14

[백준] 2156 - 포도주 시식(Dynamic programming) - (python 파이썬)

문제 링크 : https://pacific-ocean.tistory.com/152 [백준] 2156번(python 파이썬) 문제 링크: https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도 pacific-ocean.tistory.com 풀이과정 : 3연속을 제외해야하는것 때문에 점화식을 도출해 내기가 쉽지않았다. 몇번의 생각 결과, dp[i] = dp[i-3] + glasses[i-1]+[glasses[i] or dp[i-2] + glasses[i] or dp[i-1] 중에서 최대값을 찾아야한다는것이 핵심이다. glass_num = in..

Coding/백준 2022.02.11

Process와 Thread의 개념 및 차이

프로세스와 스레드가 뭐에요? 라고 말하면 답하는건 어렵지만 않지만 이둘의 차이점은 어떤것이 있는지, 깊게 파고들면 정확하게 대답하기가 쉽지않다. 우선 프로세스란 OS로부터 자원을 할당받은 작업의 단위다. 스레드란, 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위다. 즉 스레드는, 한 프로세스 내에서 나뉘어진 실행 단위인 셈이다. 가령 프로세스 두개가 동시에 실행하기 위해선, 프로세스1이 cpu에 적재되었다가, 준비상태로 내려가고 프로세스2가 적재되고, 이를 반복한다. 이것이 문맥교환이며, 이것이 반복되면 복잡하고 오버헤드가 발생하기 쉽다. 그래서 스레드는 프로세스의 메모리 구조에서, 코드 데이터 힙 영역을 공유한다. 스택 부분만 스레드마다 따로 가지고 있는 것이다. 공유되는 자원이 있기에, 문맥교환..

CS/필수지식 2022.02.11

Deadlock Resolution 1 (기본개념 및 분류)

데드락의 개념: Blocked / Asleep state => 프로세스가 특정한 이벤트, 자원을 기다리는 상태 Deadlock state => 프로세스가 발생 가능성이 없는 이벤트를 기다리는 상태 그렇다면 Deadlock과 starvation의 차이는??? 데드락은 asleep 상태에서 일어날 가능성이 zero를 기다리는 것이고, starvation은 ready상태에서, cpu를 기다리는 것 이다. 자원을 분류할 때 일반적으로 HW / SW 로 분류할 수 있으며, 이외 다른 분류법은, 선점 가능여부 할당 단위에 따른 분류 동시 사용가능 여부 재사용 가능 여부 4가지가 있으며, 각각의 특징은 아래와 같다. 선점 가능 여부에 따른 분류 => cpu는 선점 당해도 돌아와서 다시 일을 할 수 있다(Context..

CS/OS 2022.02.11

[백준] 11052 - 카드 구매하기 - (python 파이썬)

문제 링크: https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 풀이과정 : dp문제 중 줄어드는 숫자가 정확히 제시되어 있지 않은 문제였고, 이해하는데 시간이 걸렸다. 다른 dp문제 문제 처럼 리스트를 만들었고(총 가격, n개당 가격), 그 중에 최대값을 찾기위해 조건문을 사용하여 dp(총 가격)을 갱신해주면서 하나씩 숫자를 채워나가는 코드이다. card_num = int(input()) dp = [0] * (card_num+1) # 전체 가격 pric..

Coding/백준 2022.02.11