일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 17779
- 자연수 뒤집어 배열로 만들기
- 문자열을 정수로 바꾸기
- 시저암호
- 괄호 변환
- 124 나라의 숫자
- 투포인터
- 주사위 윷놀이
- 정수 내림차순으로 배치하기
- 게리맨더링 2
- 가장 큰 정사각형 찾기
- 3954
- 카카오2020 공채
- 17825
- 단체사진 찍기
- 라면공장
- java
- 후보키
- Brainf**k 인터프리터
- 백준
- 짝지어 제거하기
- programmers
- 찾아라 프로그래밍 마에스터
- 2018 카카오 공채
- 12906
- 자바
- 큰 수 만들기
- 2019 카카오 공채
- 카카오 2020 공채
- 프로그래머스
- Today
- Total
목록CS (84)
기기
백준에서 Maaaaaaaaaze 문제를 풀고 다른 사람 풀이를 봤었다. 그런데, 배열 회전에서 차이가 있었다 처음 배열 회전 시킬 때, 그냥 한 칸씩 이동하는 과정을 여러 번 반복했었다. 하지만, 회전의 특징? 을 고려하면 더 빠르고 깔끔하게 코드를 짤 수 있었다. 말로 설명하는 것보단 그림을 보는 것이 바로 이해하기 좋기 때문에 그림으로 대체.. 이 그림대로 모든 좌표 ( y, x) 를 ( x, height - y - 1 )로 바꾸면 간단하게 90 회전한 배열을 구할 수 있다. 사실 이걸 몰라도 어떻게든 회전할 수 있지만, 이 방법을 알아두는게 좋을 것 같아 따로 정리했다. 구현 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 ..
동기화 synchronous 프로세스들이 동작은 맞추는 것 작업을 요청 후 결과 값이 나올 때까지 기다리는 것을 의미합니다. ( blocking ) 비동기화 asynchronous 프로세스들이 서로에 대해 모름 작업을 요청 후 결과값이 나올 때까지 기다리지 않고 다음 코드를 실행하는 것을 의미합니다. (non-blocking) 결과 값은 이벤트큐에 넣거나 백그라운드 쓰레드에 위임합니다. 언제 필요할까? 여러 프로세스(쓰레드)가 공유 자원을 동시에 사용할 때 문제가 발생할 수 있습니다. 이러한 상황을 race condition이라고 부르는데, 둘 이상의 프로세스( 또는 쓰레드)가 하나의 데이터에 접근할 때 동기화 되지 않은 상태 따라서, 프로세스를 공유 자원의 접근을 제한하여 문제가 생기지 않게 방지하는 ..
process vs thread process : 운영체제로부터 자원을 할당받은 작업의 단위 thread : 프로세스가 할당받은 자원을 이용하는 실행의 단위 Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령 ) Data (static): 전역변수, 정적변수, 배열 등 ( 초기화된 데이터 ) Heap : 동적 할당 시 사용 ( new(), mallock() 등 ) Stack : 지역변수, 매개변수, 리턴 값 ( 임시 메모리 영역 ) 프로세스 특징 - 프로그램이 메모리에 올라가 수행하는 작업의 단위 - 고유 공간과 자원을 할당받아 사용 - 프로세스의 생성 초기 프로세스는 부팅 시 OS로 받지만, 그 후 부모 프로세스에게서 fork(), exec(),, 와 같은 시스템 콜로 생성됩니다. - 시분..
what IPC 프로세스간에 통신을 의미합니다. 원칙적으로는 프로세스는 독립적이기 때문에 서로의 수행에 영향을 주면 안 됩니다. 하지만, 업무 효율을 위해 프로세스 간에 통신이 필요한 경우가 있습니다. 이를 위해 OS에서 제공하는 것이 IPC입니다. 또한, 의사소통이 제대로 이루어 지기 위해 동기화도 주의해야합니다. when IPC 정보 공유 : 프로세스가 동일한 정보를 필요 할 수 있습니다. 계산 가속화 : 업무를 분할하여 병렬로 계산속도를 높일 수 있습니다. 모듈성 : 기능을 별도의 프로세스(쓰레스)로 나누어 모듈식으로 시스템을 구성할 수 있습니다. 편의성 : 동시에 여러 작업이 가능합니다. ex) 문서 작업, 노래 듣기 등등 병렬로 처리가능합니다. message passing VS shared me..
[ 프로그래머스 ] 종이접기 ( java ) 종이를 N번 접었을 때, 어떤 방향으로 접히는지 표시하는 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/62049 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 핵심 1. 문제 이해 가장 처음에 한 번 접는 것을 제외하면, 매번 접을 때마다 중간(들)을 기준으로 양쪽에 접히는 부분이 생긴다. 이 접히는 곳들을 left, right으로 정했다. 이 때, 오른쪽에서 왼쪽으로 접기 때문에 left는 0으로 접히고, right은 ..
[ 프로그래머스 ] 조이스틱 ( java ) 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서..
[ 프로그래머스 ] 소수 만들기 ( java ) 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로..
binary tree에서 검색 효율이 좋은 자료구조다. 장점 이진 탐색과 링크드 리스트 자료구조를 결합한 형태로 각 장단점을 보완한 것이 BST 이진탐색 : O(logn) 으로 탐색한다. 매번 원소를 비교 시, 비교 대상이 절반으로 줄어든다. 링크드 리스트 : 추가 삭제 시 O(1) 시간 복잡도 트리 높이에 비례한다. 따라서, balanced/unbalanced인지에 영향을 받는다. balanced경우, 탐색이 O(logn)이지만, unbalanced 되면 O(n)이 된다. 이 경우, 다시 rebalancing이 필요하다. 이 기법을 갖는 자료구조가 AVL, red black tree 특징 1 모든 key값은 unique. 그렇지 않으면 조건 2,3 번에 위배된다. 그래서 중복된 key입력이 보이면 co..