본문 바로가기

전체 글

(169)
[JAVA] 프로그래머스 - 짝지어 제거하기 문제내용 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있..
[JAVA] 프로그래머스 - 체육복 문제 내용 https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면..
[운영체제] 프로세스 - 뮤텍스와 세마포어 차이 뮤텍스와 세마포어 어떤 작업을 완료하기 위해 여러 프로세스, 쓰레드가 동시에 실행되는 경우가 있다. 이때 중요한건 '공유자원 관리' 이다. 공유자원의 관리가 제대로 되지 않으면 프로그램상 데드락 같은 문제가 발생될 여지가 다분하다. 뮤텍스와 세마포어는 이러한 문제 발생을 막기위한 일종의 '상호배제' 기법 중 하나라고 볼 수 있다. 특히 쓰레드의 경우 Critical Section이란 것이 존재하는데 이것도 마찬가지로 쓰레드A가 Critical Section을 선점하고 있다면 뒤에있는 쓰레드B는 쓰레드A의 작업이 종료될때 까지 기다려한다. Critical Section : 프로그램상 동시에 실행될 경우 문제가 발생할수 있는 영역. 뮤텍스 동작 원리 공유자원 : A 프로세스or쓰레드: X, Y, Z, K, ..
[JAVA] 프로그래머스 - 여행경로 문제내용 https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어..
[JAVA] 프로그래머스 - 구명보트 문제내용 https://programmers.co.kr/learn/courses/30/lessons/42885?language=java 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 ..
[운영체제] 프로세스 - 교착상태와 해결방안 교착상태란 교착상태는 실행 중인 두 개 이상의 프로세스가 있을 때 서로가 필요한 자원을 점유해놓고 줄 때까지 작업을 멈추고 무한 대기하는 현상을 말한다. 쉽게 말해서 A와 B라는 친구가 있을때 A는 해외 음식을 만들기 위해서 물과 설탕이라는 자원이 필요한데 물만 갖고 있기 때문에 설탕을 얻어야 하는 상황이다. 그리고 B도 마찬가지로 국내음식을 만드는데 물과 설탕이 필요하고 B는 설탕만 갖고 있기 때문에 물을 얻어야 하는 상황이다. 이때, A와 B가 서로 물과 설탕을 점유하고 있는 상태에서 상대방이 먼저 남은 자원을 줄 때까지 음식을 만들지 않고 기다리고 있다고 생각하면 된다. 교착상태가 발생하기 위한 조건 교착상태는 아래 4가지 조건을 만족해야 발생 가능성이 있고, 하나라도 만족하지 않는다면 발생하지 않..
[JAVA] 프로그래머스 - 큰 수 만들기 문제내용 https://programmers.co.kr/learn/courses/30/lessons/42883?language=java 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 ..
[JAVA] 프로그래머스 - 조이스틱 문제내용 https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면..