전체 글 112

[백준] 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

Process Synchronization (동기화)

다중 프로그래밍이란, 여러 개의 프로세스들이 존재할때(보통의 경우에 해당) 프로세스들은 서로 독립적으로 동작하고, 공유자원 or 데이터가 있을 때 문제가 발생한다. 이때 동기화가 필요하며, 동기화란 프로세스들이 서로 정보를 공유하며 동작을 맞추는 것이다. 비동기적 => 프로세스들이 서로에 대해 모름 병행적 => 여러 개의 프로세스들이 동시에 시스템에 존재 병행 수행중인 비동기적 프로세스들이 공유 자원을 동시 접근할 때, 문제가 발생할 수 있다. 그러므로 동기화가 필요하다! Shared data(공유 데이터) => 여러 프로세스들이 공유하는 데이터 Critical section(임계 영역) => 공유 데이터를 접근하는 코드영역 Mutual exclusion(상호배제) => 둘 이상의 프로세스가 동시에 cr..

CS/OS 2022.02.07

[백준] 11727 - 2*n 타일링 2 (동적프로그래밍) - (python 파이썬)

문제링크 : https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 풀이과정: 앞선 문제인 11726 - 2*n 타일링 1번 보다는 점화식을 구하는데 시간이 걸린 문제였지만, 그렇게 어렵지 않게 점솨히슥을 구할 수 있었다. n = 1 일때, 1 n = 2 일때, 3 n = 3 일때, 5 n = 4 일때, 11 n = 5 일때, 21 n = 6 일때, 43 이까지 구해보았고, 이를 통해 dp[n] = dn[n-2]*2 + dp[n] 이라는 점화식을 구할 수 있다. n = int(in..

Coding/백준 2022.02.07