반응형

분류 전체보기 118

[OS]멀티프로그래밍(Multiprogramming)

개요 프로세스(process)에 대해 공부하기 전에 먼저 멀티프로그래밍을 공부하는 것이 좋다. Uni-Programming (단일 프로그래밍) 멀티프로그래밍 이전에는 유니프로그래밍 방식으로 컴퓨터가 동작했다. 위의 사진을 보면 Program A가 실행될 때 RUN->Wait->Run->Wait 형태로 프로그램이 동작하기 된다. (이러한 RUN->Wait->Run->Wait 형태는 모든 프로그램에 공통되는 동작이다. CPU연산->입출력을 계속 반복하는 형태) 이때 Wait는 CPU idle 상태라고 하는데, I/O(입출력) 상태 이거나 다른 동작을 하고 있기 때문에 CPU가 일을 하지 않고 있다. 그 당시에는 CPU 연산과 같은 귀중한 자원이 idle 상태에 장기간 유지되는 것이 굉장한 낭비라고 생각되었기..

CS/OS 2021.04.27

[백준][1339번]단어 수학[JAVA]

문제 설명 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다. N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오. 풀이 방법 백트래킹 + 구현문제였다. 문자열의 값을 부여하면서..

[백준][14500번]테트로미노[JAVA]

문제 설명 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오. 테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 놓아야 하며..

[Netwhat] IP 주소와 클래스 (What is an IP address) [42Seoul]

What is an IP address IP(Internet Protocol address) 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호 OSI 7 계층에서 Netwoark Layer에 위치하는 프로토콜 호스트에서 호스트까지의 통신, 즉 보내는 컴퓨터에서 받는 컴퓨터까지 통신을 책임진다. IP주소 2010년 기준 IPv4와 IPv6 두 가지 체계가 있다. IPv4 널리 사용되는 IP 주소로, 32비트의 값을 가진다. 보통 8비트씩 끊어 이를 0~255의 10진수 숫자로 나타내며, 각 숫자는 점(.)으로 구분한다. 총 32bits의 정보를 가지므로 최대 232개, 약 43억 개의 고유한 주소를 부여할 수 있다. IPv6 128bits의 값을 가진다. 일반적으로 4자..

[백준][19236번]청소년 상어[JAVA]

문제 설명 아기 상어가 성장해 청소년 상어가 되었다. 4×4크기의 공간이 있고, 크기가 1×1인 정사각형 칸으로 나누어져 있다. 공간의 각 칸은 (x, y)와 같이 표현하며, x는 행의 번호, y는 열의 번호이다. 한 칸에는 물고기가 한 마리 존재한다. 각 물고기는 번호와 방향을 가지고 있다. 번호는 1보다 크거나 같고, 16보다 작거나 같은 자연수이며, 두 물고기가 같은 번호를 갖는 경우는 없다. 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 오늘은 청소년 상어가 이 공간에 들어가 물고기를 먹으려고 한다. 청소년 상어는 (0, 0)에 있는 물고기를 먹고, (0, 0)에 들어가게 된다. 상어의 방향은 (0, 0)에 있던 물고기의 방향과 같다. 이후 물고기가 이동한다. 물고기는 번호가 작은 물고기부..

[백준][20055번]컨베이어 벨트 위의 로봇[JAVA]

문제 설명 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 Ai이다. 위의 그림에서 1번 칸이 있는 위치를 "올라가는 위치", N번 칸이 있는 위치를 "내려가는 위치"라고 한다. 컨베이어 벨트에 박스 모양 로봇을 하나씩 올리려고 한다. 로봇은 올라가는 위치에만 땅에서 올라가고, 내려가는 위치에서만 땅으로 내려갈 수 있다. 내려가는 위치에 로봇이 있는 경우 로봇은 반드시 ..

[백준][15655번]N과 M(6)[JAVA]

문제 설명 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 풀이 방법 N과M(5)번 문제와, N과M(4)번 문제의 결합 문제이다. 주어진 N을 이용해서 순열을 만들지만, N배열이 정렬되어 있다는 가정으로 매개변수의 idx를 1씩 증가하면 된다. 알아야되는 개념 백트래킹 Stringbuilder import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main {..

[백준][15654번]N과 M(5)[JAVA]

문제 설명 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 풀이 방법 주어진 N개의 배열을 갖고 순열을 만들면 되는 문제였다. N과M(1)번 문제와 유사했고, N의 원소에 대해 값을 꺼내고, 중복 체크를 해주면 되는 문제이다. 알아야되는 개념 백트래킹 Stringbuilder import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int N, M; static int ..

[백준][15652번]N과 M(4)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 풀이 방법 중복 허용 -> N과M(3)번과 유사하다. 비내림차순 -> N과M(2)번과 유사하다. 즉, 매개변수에 idx를 추가하지만, 오름차순이 아니기 때문에 +1을 넣어주지 않으면 된다. idx에 값으로 반복문을 돌기 때문에 arr[0]은 항상 arr[1] 보다 작거나 같게 된다. 알아야되는 개념 백트래킹 Stringbuilder import java.util.Sca..

[백준][15651번]N과 M(3)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 풀이 방법 N과 M(1)에는 중복을 허용하지 않나 visit 배열을 사용했었다. 하지만 N과M(3)에서는 중복을 허용해준다 !! 그럼으로 중복을 체크했던 visit 부분을 지워주면 된다. 단, JAVA를 사용할 경우 System.out.print를 쓰면 시간 초과가 발생한다. 이러한 문제를 방지하기 위해서 StringBuilder를 사용하면 된다. (System.out.print는 매우 느린 속도를 갖고 있다) 알아야되는 개념 백트래킹 Stringbuilder import java.util.Scanner; ..

반응형