본문 바로가기

728x90

전체 글

(223)
[Operating System] 스레드는 뭐야? multi tasking은 컴퓨터 시스템 내에 여러 가지 일들을 동시에 실행시키는 기법입니다. 예시로 컴퓨터로 음악을 들으며 자료조사를 하고 발표자료를 만들 수 있는 것처럼 한 번에 3가지 일을 동시에 처리 가능한 이유도 현대 컴퓨터가 multi tasking을 지원하기 때문입니다. 초기의 multi tasking은 process를 사용하여 구현하였습니다. 하지만 process는 fork()를 이용하여 자식을 생성하기 때문에 한번 process를 만드는 것은 컴퓨터에게 많은 시간과 메모리를 필요로 했습니다. 다음은 process로 multi tasking 구현 시 발생하는 문제점입니다. 프로세스 생성 큰 오버헤드: fork()를 실행할 때에 메모리 공간 할당, 부모 프로세스의 메모리를 복제, PCB를 생..
[Operating System] 프로세스는 뭐야? 위의 사진을 보면 process name 부분에 메모장, 파워포인트, 엑셀과 같은 프로그램들이 있는 것을 확인할 수 있습니다. 방금 언급했듯이 메모장, 파워포인트, 엑셀은 프로그램인데 왜 프로세스로 분류되어 있을까? 컴퓨터를 사용할 때 또는 개발을 할 때 프로세스라는 단어는 어렵지 않게 찾아볼 수 있습니다. [Operating System] 프로세스는 뭐야? 에서는 프로세스를 공부하면 궁금했던 점들을 위주로 정리해보겠습니다. 프로그램 vs 프로세스 메모장은 프로그램도 될 수 있고, 프로세스도 될 수 있습니다. 그렇다면 어떻게 구분하는지는 두 용어의 정의를 확인해보면 알 수 있습니다. 프로그램: 보조 기억 장치에 저장된 실행 가능한 파일로 명령어와 정적인 데이터의 묶음으로 메모리에 적재되어 있지 않다. 프..
[Data Structure] 배열과 포인터 많은 프로그래밍 언어에서 배열은 따로 구현하지 않아도 사용할 수 있습니다. 그렇기 때문에 당연하게 배열을 사용하여 배열이 어떠한 의미를 가지는지 index를 넣으면 어떻게 값이 바로 나오게 되는지 고민해볼 시간이 많지 않았습니다. 따라서 다음의 목표를 기준으로 글을 작성해나가겠습니다. 배열과 포인터의 특징과 의미가 무엇인지 알아본다. 배열과 포인터는 어떠한 관계를 가지고 있는지 알아본다. 우선, 배열의 특징과 의미에 대해서 알아보겠습니다. 배열은 연속된 메모리 공간을 할당하여 값을 저장하는 방식으로 동일한 타입의 데이터를 저장할 때 사용합니다. 여기서 중요하게 봐야 할 부분은 연속된 메모리 공간과 동일한 타입의 데이터입니다. 연속된 메모리 공간은 배열이 저장되어 있는 메모리 사이의 빈 공간이나 배열과 관..
[Error] The following parts of the payload were not documented JUnitRestDocumentation와 mockmvc를 사용하여 controller 테스트 코드를 작성하는 중에 다음과 같은 error를 발견했습니다. org.springframework.restdocs.snippet.SnippetException: The following parts of the payload were not documented: { "name" : "사이다" } error의 내용을 읽어보면 "name: 사이다" 부분이 문서화 되지 않아서 발생한 error 였습니다. 따라서 controller 테스트 코드에 해당 내용을 추가해주는 것으로 문제를 해결하였습니다. error를 해결하는 도중에 requestFields를 사용하여 테스트 코드를 작성할 때에는 mocking 오브젝트의 con..
[Problem Solving] 백준 16987 계란으로 계란치기 계란으로 계란치기 문제에 대한 자세한 설명은 다음 링크를 참고해주시기 바랍니다. 문제 설명 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 계란으로 계란치기 문제는 브루트포스 알고리즘, 백트래킹 유형의 문제로 dfs 알고리즘을 사용하여 구현해야 합니다. 깨지지 않은 왼쪽 계란을 순서대로 들어 깨지지 않고, 들고 있지 않은 계란에 한 해 1회 부딪칠 수 있습니다. 모든 계란에 대한 처리가 끝났을 때 반복한 후에 깰 수 있는 계란의 최댓값을 결과로 출력합니다. 모든 경우에 대해서 처리하기 전까지는 어..
[Problem Solving] 백준 2295 세 수의 합 세 수의 합 문제에 대한 자세한 설명은 다음의 링크를 참고해주시기 바랍니다. 문제 설명 2295번: 세 수의 합 우리가 x번째 수, y번째 수, z번째 수를 더해서 k번째 수를 만들었다라고 하자. 위의 예제에서 2+3+5=10의 경우는 x, y, z, k가 차례로 1, 2, 3, 4가 되며, 최적해의 경우는 2, 3, 4, 5가 된다. k번째 수가 최 www.acmicpc.net 정수 배열이 주어지면 적절하게 3개의 수를 선택하여 더한 결괏값이 정수 배열에 있는 정수 중에 가장 큰 수를 결과로 반환하는 문제입니다. 처음 문제에 대해서 접근할 때에는 조합과 이진 탐색을 사용하여 문제를 해결하려고 하였습니다. 하지만 조합의 시간 복잡도 O(n^3) 이진 탐색의 시간 복잡도 O(logn) 이므로 통합 시간 복..
[Problem Solving] 백준 4179 불! 백준 4179 불! 문제에 대한 자세한 설명은 다음의 링크를 참고해주시기 바랍니다. 문제 설명 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 미로 안에 지훈이와 불이 붙은 위치가 주어졌을 때 지훈이가 탈출 여부를 확인하고, 탈출할 수 있다면 최단 시간을 출력하는 문제입니다. 그래프 탐색 문제로 대부분의 문제들은 dfs, bfs를 하나의 대상에게 적용시켰지만 불! 문제는 불과 지훈이를 대상으로 그래프 탐색을 진행한다는 점에서 차이가 있었습니다. 다음은 문제 해결 순서입니다. maps를 순환하며 ..
[Problem Solving] 프로그래머스 77884 약수의 개수와 덧셈 약수의 개수와 덧셈 문제에 대한 설명은 다음의 링크를 참고해주시기 바랍니다. 문제 설명 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr left와 right 사이의 정수에 대해서 약수의 개수를 세어주고, 약수의 개수가 홀수라면 빼고 짝수라면 더한 결과를 출력해주는 문제입니다. 문제를 해결하기 위해서는 약수를 모두 세어줘야 한다고 생각하여 1을 제외한 모든 수의 약수를 세어주어 문제를 해결하였습니다. 약수의 개수를 세어줄 때에는 1부터 자기 자신까지 순환해주는..

728x90