본문 바로가기

전체 글

(236)
[2018 KAKAO BLIND RECRUITMENT][문자열 처리] [1차] 비밀지도 - Java 문제 바로가기 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 입력으로 들어오는 숫자들을 토대로 지도를 만드는 문제입니다. class Solution { public static String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; for(int i = 0; i < n ;i++) { answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]); answer[i] = Str..
[2017 카카오코드 예선][BFS] 카카오프렌즈 컬러링북 - Java 문제 바로가기 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 기본적인 BFS 문제입니다. 그림에 있는 영역의 개수와 그 중 가장 큰 영역의 칸의 개수를 구하면 됩니다. import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Queue; class Solution { static class Dir{ int y, x; Dir(int y, int x)..
[운영체제] CH6. Process Synchronization(2) Classical Problems of Synchronization Bounded-Buffer(유한한 버퍼) Problem (=Producer-Consumer Problem) 버퍼의 크기가 유한한 환경에서 발생한다. 이 문제에는 Producer 프로세스들과 Consumer 프로세스들이 존재한다. Producer Empty 버퍼가 있는지? - 없으면 기다린다. 공유 데이터에 lock을 건다. Empty buffer에 데이터 입력 및 buffer를 조작한다. Lock을 푼다. Full buffer 하나를 증가시킨다. Consumer Full 버퍼가 있는지? - 없으면 기다린다. 공유 데이터에 lock을 건다. Full buffer에서 데이터를 꺼내고 buffer를 조작한다. Lock을 푼다. Empty bu..
[BOJ-14499][시뮬레이션] 주사위 굴리기 - Java 문제 바로가기 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 일반적인 시뮬레이션 문제입니다. 마찬가지로 주어진 제한 조건들을 잘 고려해서 풀어야 합니다. 삼성 SW 역량 테스트 문제가 점점 어려워지는 것 같습니다.. 최근에 나온거 보다가 윗 쪽에 있는 거 보면 선녑니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..
[BOJ-13458][시뮬레이션] 시험 감독 - Java 문제 바로가기 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 기본적인 로직은 어렵지 않은 문제입니다. 다만 변수에 들어갈 수 있는 최댓값을 고려해서 자료형을 정해줘야 합니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ public stat..
[BOJ-12100][시뮬레이션/스택] 2048 (Easy) - Java 문제 바로가기 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 다들 많이 해봤을 법한 게임 2048을 구현하는 문제입니다. 주어진 초기 판을 최대 다섯 번 움직여서 나올 수 있는 최댓값을 구하는 문제입니다. 문제에는 '최대 다섯 번' 움직였을 때라고 나오지만 게임을 진행하는데 한번 더 움직인다고 해서 최댓값이 줄어들진 않기 때문에, 그리고 다섯 번 다 움직였을 때 최댓값이 나올 수 있으므로 무조건 5번 움직이고 나서 값을 구해주면 됩니다. import java.io.BufferedR..
[BOJ-1717][Disjoint-Set] 집합의 표현 - Java https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1≤n≤1,000,000), m(1≤m≤100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 �� www.acmicpc.net Disjoint-Set 을 사용하는 가장 기본적인 문제라고 생각합니다. p[] 배열을 만들고, find() 연산과 union() 연산을 이용하면 쉽게 풀 수 있습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public cl..
[운영체제] CH6. Process Synchronization(1) 여러 주체가 하나의 데이터를 동시에 접근하려는 경우를 Race Condition(경쟁 상태)이라고 한다. 데이터의Race condition이 있으면 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라진다. 즉, 결과가 접근의 순서에 의존적이다. -> 결과가 안정적이지 않다. 따라서 Race condition을 막기 위해서는 Concurrent process는 동기화(Synchronize)되어야 한다. 멀티 프로세서 시스템에서 공유 메모리를 사용하는 프로세스들 간 커널 내부 데이터를 접근하는 루틴들 간에 e.g) 커널 모드 수행 중 인터럽트로 커널 모드가 다른 루틴을 수행 시 Race condition이 발생할 수 있다. 구체적으로 다음과 같은 세 가지 경우를 볼 수 있다. Kern..