분류 전체보기
기술 면접 주요 질문 답변 정리(5문항)
기술 면접 주요 질문 답변 정리(5문항)
2022.12.251. 프로세스 구조에 대해 가능한 상세하게 설명하시오. 프로세스는 일반적으로 코드, 데이터, 힙, 스택 영역으로 구성되어 있습니다. 코드 영역은 프로그램 코드가 저장되고, 데이터 영역은 전역 변수등이 저장됩니다. 힙 영역은 동적으로 할당된 메모리를 위한 공간이고 스택 영역은 함수 실행을 위한, 지역 변수등이 저장됩니다. 2. 프로세스간에 어떤 기술을 사용해서 통신하는지, 왜 해당기술을 사용해서 통신해야 하는지를 쓰레드와 비교해서 설명하시오. 프로세스간에는 주소공간이 분리되어 있습니다. 그러므로 프로세스간 통신을 위해서는 IPC라고 하는 별도의 기술을 사용해야 합니다. 쓰레드의 경우는 하나의 프로세스 주소공간 안에서 코드/데이터/힙 공간을 공유하기 때문에, 별도의 통신 기술이 필요하지 않습니다. 3. 프로..
1940. 주몽
1940. 주몽
2022.12.25https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 이 문제는 투 포인터와 정렬을 개념을 활용하여 푸는 문제입니다. N의 최대 범위가 15000까지이기 때문에 시간 복잡도에 있어서 다소 자유도가 있는 편입니다. 정렬을 사용해도 크게 문제가 없습니다. 입력받은 N개의 재룟값을 정렬한 후에 양쪽 끝의 위치를 투 포인터로 지정해 문제에 접근해주시면 됩니다. *풀이 1. 재료 데이터를 배열에 저장한 후 오름차순 정렬합니다. 여기서..
[자료구조]브루트 포스
[자료구조]브루트 포스
2022.12.25브루트 포스는 완전탐색 알고리즘, 모든 경우의 수를 탐색하는 알고리즘을 말합니다. (Brute : 짐승, 동물 Force : 힘) 다른 명칭으로는 키 전수조사, 무차별 대입 공격이라고도 부릅니다. 과거 1990년대 청와대 해킹 사건 당시에 해당 알고리즘이 사용되었던 적이 있습니다. 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과를 가져오는 이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답만을 출력해줍니다. ** 브루트 포스를 간략하게 정리하자면 - 문제를 해결하기 위해 모든 자료를 탐색해야 하기 때문에 특정한 구조를 전체적으로 탐색할 수 있는 방법을 필요로 합니다. - 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상되는 모든 영역을 전체적으로 탐색하는 방법..
[자료구조]투 포인터
[자료구조]투 포인터
2022.12.24*참고자료 1) Doit 자바 알고리즘 코딩테스트 2) https://butter-shower.tistory.com/226 투 포인터는 2개의 포인터로 알고리즘의 시간 복잡도를 최적화하는 데 사용하기 적합하며 리스트에 순차적으로 접근시 두 개의 점의 위치를 기록하면서 처리하는 알고리즘입니다. 보통 start_index, end_index 라는 변수를 선언하거나 특정 변수 두 개를 선언하는 방식으로 코드를 구성합니다. 문제를 통해 투 포인터 관련 내용 설명해드리겠습니다. https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 ..
[자료구조]스택(Stack), 큐(Queue)
[자료구조]스택(Stack), 큐(Queue)
2022.12.23** 스택(Stack) 스택(stack)이란 데이터를 쌓아서 올려놓은 형태의 자료구조 ex) 책상에 쌓여있는 책, 싱크대의 접시 스택은 위의 그림과 같이 아래에서 위로 쌓는 형식이며 가장 최근에 들어온 자료를 top이라고 부른다. 뻥튀기를 꺼낼 때 가장 아래족의 뻥튀기를 꺼내려면 위에서부터 차례대로 뻥튀기를 꺼내야 하는 것처럼 가장 위쪽(최신)의 데이터부터 꺼낼 수 있으며 이러한 구조를 후입선출(LIFO, Last In First Out)의 구조라고 한다. 스택의 경우 자료의 삽입과 삭제는 한 곳(top)에서만 이루어진다. 만약 스택이 비어있을 때 자료를 꺼내려고 시도하면 스택 언더플로우(Stack Underflow)가 발생하고 반대로, 스택이 꽉 차있을 때 자료를 넣으려고 하면 스택 오버플로우(Stac..
2022. 12. 23 - 오늘은 어때(과거 회상 및 현재를 바라보다)
2022. 12. 23 - 오늘은 어때(과거 회상 및 현재를 바라보다)
2022.12.23어느덧 2022년도 끝이 다가오고 있다. 뭐 이렇게 시간이 빨리 가는지 2022년이 엊그제 같은데 벌써 크리스마스를 앞두고 있다. 한때는 편안하게 숨만 쉬면서 조용히 살고 싶었으나 그런 배부른 생각을 할 시간마저도 부족한 지금, 나의 인생은 어디로 흘러가고 있는가를 틈날 때마다 생각하고 있다. 나는 누구인가? 나의 인생 항해방향은 제대로 잡혀 있는가? 이런 생각들이 한편으로는 나에게 사색할 거리와 휴식을 주기도 하지만 또 한편으로는 걱정과 고민거리를 가져다 주기도 한다. 그래도 이런 생각을 아예 안 하는 것보다는 하는 게 더 낫다고 본다. 생각을 하지 않는 삶은 죽은 삶이나 마찬가지이니 말이다. 기존에 다니던 회사를 그만두고 다시 취업준비를 하고 있는데 과정이 생각만큼 만만치가 않다. 그래도 나는 지금이..
[프로그래머스]2016년
[프로그래머스]2016년
2022.12.23https://school.programmers.co.kr/learn/courses/30/lessons/12901 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 배열의 개념을 활용하여 문제를 푸는 문제입니다. 하지만 그것외에도 설명할 내용이 더 필요한데 일단 문제풀이 소스부터 한번 보시겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import java.time.LocalDate; impor..
11720. 숫자의 합 구하기
11720. 숫자의 합 구하기
2022.12.23https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 저는 처음에 이 문제를 배열로 풀지 않고 기본적으로 알고 있는 지식만으로 풀었습니다. 배열로 푸는 방법도 있지만 사실 배열을 쓰지 않고 푸는 방법이 성능면에서는 더 좋습니다. 배열을 활용하는 방법과 활용하지 않아도 풀 수 있는 방법 두 가지를 이 문제를 통해 숙지해두시면 좋을 거 같아 배열을 활용한 풀이법도 같이 올려드립니다. * 풀이1 (배열 활용 X) - charAt()을 활용하여 문자열의 문자를 활용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
[자료구조] 배열(Array)
[자료구조] 배열(Array)
2022.12.23배열 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조입니다. 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있습니다. 연속적인 메모리 공간에 순차적으로 데이터를 저장하며 선언시 정한 크기가 고정이 됩니다. 선언된 값은 다시 배열을 선언하지 않으면 변경이 어렵습니다. ○ 배열의 특징 - Summary 1) 인덱스를 사용하여 값에 바로 접근할 수 있습니다. 2) 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵습니다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요합니다. 3) 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없습니다. (이 부분 때문에 ArrayList를 사용하는..
소수(Prime Number) - 에라토스테네스의 체 (Java)
소수(Prime Number) - 에라토스테네스의 체 (Java)
2022.12.18○ 소수 - 1과 자기 자신만을 약수로 가지는 수 ○ 소수 구하기 - 에라토스테네스의 체 소수 관련 문제를 풀 때 가장 자주 사용되는 방법은 에라토스테네스의 체이다. 다음은 에라토스테네스의 체는 소수를 찾는 간단한 알고리즘을 시각적으로 표현한 것이다. (위키피디아 참고) 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 자기 자신을 제외한 3의 배수를 모두 지운다. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 자기 자신을 제외한 5의 배수를 모두 지운다. 남아..
[프로그래머스]콜라츠 추측
[프로그래머스]콜라츠 추측
2022.12.13https://school.programmers.co.kr/learn/courses/30/lessons/12943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 콜라츠 추측이란 문제인데 짝수와 홀수의 특징을 구분하여 주어진 수를 1이 되도록 해줘야 하는 문제입니다. 2. 풀이 어려운 문제는 아니지만 626631을 주어진 계산법대로 적용할 경우 오버플로우가 발생하여 결과값이 -1이 아닌 488로 나오는 경우가 발생하니 주의해야 합니다. 이 경우엔 형변환을 하여 해당 변수가 정상적으로 계산이 되도록 해주는 작업을 해줘야 합니다. *소스코드 1 2 ..
1110. 더하기 사이클
1110. 더하기 사이클
2022.12.08https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 1. 문제 자릿수 개념에 대한 응용이 익숙하지 않아서 나로서는 문제풀기가 쉽지 않았다. N을 10으로 나눈 값이 몫이고, N을 10으로 나눈 값의 나머지를 활용하여 푼다는 생각은 하지도 않았기 때문이다. 알고리즘 문제 하나하나 풀기가 여간 쉬운 일이 아니다... 조금씩 정리해나가면서 문제풀이 경력을 쌓아나가야겠다는 생각이 들었는데 해당 문제에서 나온 해결법은 다른 곳에서도 충분히 활..