일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 9663
- dfs
- 프로그래머스
- LCS2
- 가장 긴 증가하는 부분수열
- 2606
- boj 11053
- 냅색
- list
- 12865
- 타겟 넘버
- 대소비교
- BFS
- 평범한 배낭
- 알고리즘
- 백준 1535
- 파이썬
- 백준 2606
- BOJ 2606
- python
- 미로탐색
- 증가하는 부분수열 2
- 백준 12015
- 8-queen
- 데카르트 곱
- 백준 9252
- 백준
- 소수찾기
- 백준_2178
- 리스트
- Today
- Total
목록전체 글 (37)
Devlog_by_0giru
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 드디어 풀었다. 풀고나니 허무할 정도였다. 아마 이 문제 제일 오랫동안 못푼사람일듯 아마 필자처럼 이 문제를 오래 풀 사람은 없겠지만...혹시 몰라 자세히 적어보려한다 ㅠㅠ 이 문제는 사실 N * N의 배열을 만들어서 풀어도 된다. 그게 틀린 풀이가 아니지만 최적의 실행시간을 가지기 위해서는 반드시 1차원 배열(필자는 파이썬을 이용했기 때문에 리스트)을 사용해야 하는 모양이다. 2차원 배열을 이용해 실제 체스판 ..
https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 파이썬의 강력함을 몸소 느낄 수 있는 문제였다. 단 3줄만으로 문제를 풀 수 있었다. 처음에는 모든 경우의 수를 구해 가장 큰 값을 구하는 방법으로 접근해 permutations를 이용했다. 허나 이 방법을 이용하면, O(N!)의 시간복잡도를 가져 절대 통과할 수가 없었다... 그럼 어떻게 풀어야 ..
https://programmers.co.kr/learn/courses/30/lessons/42747# 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 프로그래머스 문제는 종종 문제 자체가 이해가 잘 되지 않는 경우가 많다. 아직 레벨2 따리지만... 논문의 인용 수 h를 norm(기준이라는 뜻)이라는 변수로 지정하고 0으로 초기화 한뒤 1씩 올려가는 while 반복을 통해 norm 이상으로 인용된 논문 수를 구하는 방식으로 구했다. 문제의 포인트는 h번 이상 인용된 논문의 개..
https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 일단 문제 해석이 어색하게 될 수 있어서 좋은 문제는 아니라는 생각이 든다. 질문을 검색하면 다른 사람들도 문제 이해에 많은 혼란을 겪은 듯 하다. 문제에서 주식 가격이 바로 다음 순간에 바뀌더라도, 1초간 가격이 변동되지 않았다는 것으로 간주해야 한다는 점이 포인트이다. 즉, 다음 원소가 더 작은지 여부를 판단하기보단 ..
https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 레벨2 문제라고 쉽게 생각했다가 몇일동안이나 고민했다. 프린트 순서를 만지는 방법은 금세 떠올랐지만 코드로 구현하는 능력이 부족했다. 근처 난이도의 문제를 더 풀며 구현능력을 키워야 한다ㅠㅠ 두가지 방법을 풀 수 있었는데, 먼저 두 방법 모두 큐를 사용하기 위해 collection의 deque를 import 했다. 첫번 째 방법은 아래 코드블럭에서 주석처리한 방법이..
프로세스와 스레드, 멀티스레딩 프로세스란 프로그램의 실행 코드가 컴파일되어 메모리에 적재된 상태를 말한다. 이는 하나의 스레드 제어로 진행되는 프로그램이라고 볼 수 있다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터섹션, 열린 파일이나 신호와 같은 OS자원을 공유한다. 스레드란, 작은 규모의 프로세스라고 할 수 있다. (Light Weight Process, LWP) 스레드는 CPU 점유의 기본 단위가 된다. 스레드는 스레드ID, 프로그램 카운터, 레지스터 셋, 스택으로 이루어진다. 멀티스레딩이란, 하나의 프로세스 내에서 하나가 아닌 여러 스레드가 동작하는 것을 말한다. 멀티 스레딩이 왜 필요할까? 하나의 응용 프로그램은 여러가지 역할을 수행할 수 있다. 예를 들어, 웹 브라우저는 이미지를..
프로세스간 통신 IPC(Inter-Process Communication) 프로세스는 다른 프로세스와 독립적(Independent)으로 동작하거나, 협력적(Cooperating)으로 동작할 수 있다. 프로세스가 Independent 하다면, 이는 다른 프로세스와 데이터를 공유하지 않는 다는 것을 의미하고, Cooperating 하다면 이는 다른 프로세스와 데이터를 공유함을 의미한다. Cooperating 하는 프로세스는 IPC 메커니즘을 필요로 하고, 크게 두가지 IPC 모델이 있다. Shared Memory : 하나의 공유 메모리를 생성해 공유 메모리에 공유할 데이터를 송신, 수신하는 방법이다. 생산 프로세스와 소비 프로세스가 차례로 프로세서를 점유하며 생산 프로세스는 버퍼(Shared Memory)에..
프로세스란? 실행 중인 프로그램, 혹은 현대의 시분할 시스템에서 운영체제 작업의 단위를 말한다. 프로그램을 컴파일하여 메모리상에 적재되면, 이를 프로세스라고 한다. 프로세스의 메모리상에서의 표현 프로세스는 메모리 상에서 다음과 같은 속성을 포함하여 표현된다. Text section - 프로그램의 실행 코드 Data section - 전역 변수 Heap section - 프로그램 런타임 때 동적으로 할당되는 메모리 공간 Stack section - 프로그램 함수 호출 시 임시로 할당되는 메모리 공간 (함수 인자, 반환 주소, 지역 변수 등) 프로세스의 5가지 상태 프로세스는 New, Running, Waiting, Ready, Terminated의 총 5가지 상태를 가진다. New : 프로세스가 막 생성된..