본문 바로가기

전체 글105

[백준 JAVA] 10826 피보나치 수4 문제 https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이방법 간단한 피보나치 수 문제 같지만, 일반적인 피보나치 수처럼 문제를 풀면, ArrayIndexOutOfBounds 런타임 에러가 나는 문제였다. 입력값을 보면 n은 10,000까지 가기 때문이다. 이 문제를 해결하기 위해서는 BigInteger를 사용해야 했다. Int는 메모리 크기는 4byte로 표현할 수 있는 범위는 -2,147,483,648.. 2022. 9. 18.
[백준 JAVA] 17406 배열 돌리기 4 문제 https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 풀이방법 회전 순서에 따라 최종 배열이 다르기 때문에 순열코들르 사용하여, 회전연산의 순서를 정해주어야 한다. 순서를 정하면, 움직일 정도인 sx, sy, ex,ey를 구해준 후 spin함수를 사용해서 배열을 돌려준다. 시계 방향으로 한 칸씩 돌리기 위해서 아래와 같이 방향을 4가지로 나눠서 배열을 돌려주었다. spin 코드는 아래와 같다. //배열 돌리기 st.. 2022. 9. 18.
[백준 JAVA] 17609 회문 문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 풀이방법 처음에 입력받은 문자열이 회문이라면, 회문인지 판별할 필요없이 0을 출력한다. 처음에 입력받은 문자열이 회문이 아니라면, 알고리즘을 진행한다. 모든 글자들을 다 확인할 필요 없이, 회문이 아니게 된 문자를 앞, 뒤를 각각 지워보고 회문인지 판별한 뒤에, 회문이라면 1을, 회문이 아니라면 2를 출력하면된다. 그 이상의 글자들을 다 확인해봤자, 처음 회문이 아닌 문자열은 회문이 아니기 때문이다. 이 생각을 하지않고 .. 2022. 9. 18.
프로세스, 스레드 프로세스와 스레드에 대해서 정리해보자. 프로세스 프로세스는 코드로 작성된 프로그램이 메모리에 적재되어 사용할 수 있는 상태가 된 것이다. 즉, 실행 중인 프로그램이다. 프로세스의 특징은 다음과 같다. 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 컴퓨터에서 연속적으로 실행되고 있는 프로그램이다. 각 프로세스는 별도의 주소 공간에서 실행되며, 프로세스끼리는 자원을 공유하지 않는다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 스레드 스레드란, 프로세스 내에서 실제로 작업을 수행하는.. 2022. 9. 16.