목록전체 글 (591)
어흥
문제 링크: https://www.acmicpc.net/problem/21276 21276번: 계보 복원가 호석 석호촌에는 N 명의 사람이 살고 있다. 굉장히 활발한 성격인 석호촌 사람들은 옆 집 상도 아버님, 뒷집 하은 할머님 , 강 건너 유리 어머님 등 모두가 한 가족처럼 살아가고 있다. 그러던 어느 날 www.acmicpc.net 1. 주의할 점 - String 형태의 배열을 어떻게 표현할 것인가? - 위상정렬에 대해 알고 있어야 한다 2. 구현 - 사람들에 대한 정보를 People에 담는다 - People을 정렬한 뒤, HashMap에 넣는다 - 하나는 이름을 통해 Index를 알아내는 Map. 그리고 다른 하나는 Index를 통해 이름을 알아내는 revMap. - 관계에 대한 정보는 Li[]에 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 1. 주의할 점 - 문제에 적힌 대로만 구현한다 - 빈 문자열 처리를 알맞게 한다 2. 구현 - DFS() 함수에서 다음과 같은 작업을 순차적으로 한다 - 넘겨 받은 파라미터가 빈 문자열이면 그대로 반환한다 - 넘겨 받은 파라미터를 균형잡힌 괄호 문자열 U와 나머지 부분인 V로 나눈다 - isComplete 함수를 통해 U가 올바른 괄호 문자열인지 확..
문제 링크: https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 1. 주의할 점 - StringBuilder를 사용해서 출력하자(하지 않으면 TLE) - O(N*N)의 시간복잡도를 가지지 않도록 한다 2. 구현 - 각 숫자를 Arr[]에 담으면서, 해당 숫자가 몇 번 등장했는지 Cnt[] 배열에 저장한다 - 오른쪽에 위치하면서 가장 가까운 숫자를 담아야 하므로 Arr[]의 뒤부터 탐색한다 - Stack에는 우 → 좌 로 이동하면서 현재 숫자가 등장한 횟수가 S..
문제 링크: https://www.acmicpc.net/problem/22234 22234번: 가희와 은행 가희는 창구가 하나인 은행을 운영하고 있습니다. 가희의 은행이 영업을 시작했을 때, 대기 줄에는 손님이 N명 있습니다. [그림 1] 카운터 직원과 N명의 손님 x번 손님에 대한 정보는 x번 손님의 www.acmicpc.net 1. 주의할 점 - RR(RoundRobin) 문제다 - 스케줄링 문제의 경우, 각 작업이 일어나는 순서와 정렬 방식에 주의한다 2. 구현 - 대기큐 Q에는 0초에 대기중인 고객들에 대한 정보를 저장한다 - 1초 이후에 들어오는 고객들은 입장 시간에 대한 오름차순으로 정렬되어 있지 않기 때문에 우선순위 큐 PQ를 통해 정렬을 한다 - 현재 시간(curTime)을 0초로 설정하고..
문제 링크: https://www.acmicpc.net/problem/22232 22232번: 가희와 파일 탐색기 첫 번째 줄에 jo_test 폴더에 있는 파일 개수 N과 가희가 설치한 OS에서 인식하는 파일 확장자의 개수 M이 공백으로 구분되어 주어집니다. 2번째 줄부터 N+1번째 줄까지 FILENAME.EXTENSION 형식의 문자열 www.acmicpc.net 1. 주의할 점 - 정렬 순서를 정리한다 - OS에서 인식하는 확장자인지 구분할 수 있는 방법을 생각한다 2. 구현 - List에 파일명들을 저장한다 - HashSet에 OS에서 인식하는 확장자명을 삽입한다 - List에 저장된 파일명들을 불러와서 파일명, 확장자명, OS에서 인식여부를 구하고 우선순위큐에 삽입한다 - 우선순위큐의 정렬 기준은..
문제 링크: https://www.acmicpc.net/problem/15926 15926번: 현욱은 괄호왕이야!! 첫 번째 입출력에서, 맨 처음 위치부터 4개를 잘라낸 (())가 가장 긴 올바른 괄호 문자열이다. 두 번째 입출력에서, 6번째 위치부터 8개를 잘라낸 ()((()))가 가장 긴 올바른 괄호 문자열이다. www.acmicpc.net 1. 주의할 점 - 스택을 사용해서 해결한다 → O(N)에 해결 2. 구현 - 스택에 문자와 문자가 위치했던 인덱스 번호를 구조체 형태로 저장하여 쌓는다 - 이때, 스택의 Top에 위치한 원소와 현재 검색하려는 원소가 쌍이라면 스택의 원소를 뺀다 - 이외의 경우에는 스택에 원소를 추가한다 - 위의 방법을 통해 스택에는 쌍을 못이룬 문자들에 대한 정보만 담고 있다 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 1. 주의할 점 - 구현해야 하는 조건이 많다 - 2개의 좌표를 어떤 방식으로 저장할 것인지 정한다 2. 구현 - BFS를 통해 문제를 해결한다 - Info 객체를 통해 로봇의 정보를 저장한다. 로봇의 한 좌표와 어떤 방향에 다른 좌표가 위치해 있는지 저장한다. - 우선순위큐 pq에 로봇의 정보를 담으며, 소요 시간의 오름차순으로 정렬한다 - Board의 정보를 static 변수..
동시성 제어는 멀티 유저를 위한 프로젝트를 개발하다보면 필수로 처리해야 될 문제다. 1. 개념 우선 동시성 제어란, 동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다. 동시성 제어의 정의 Multi-user 환경을 지원하는 DB 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원 Multi-user 환경을 지원하는 DB 시스템에선 필수로, '병행 제어'로도 불린다 트랜잭션의 직렬화 수행 보장(순서 보장) 동시성 제어의 목적 트랜잭션의 직렬성 보장 데이터의 무결성 및 일관성 보장 동시성 제어 필요 이유 갱신 손실(Lost Update): 2개 이상의 트랜잭션이 1개의 데이터를 동시에 갱신 → 갱신 무효화 현황파악오류(Dirty..