본문 바로가기

분류 전체보기

(386)
[pro] 프로그래머스 level2 67257 수식 최대화 (Java) - 브루트포스, dfs [문제] https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 먼저 피연산자와 연산자를 분리해서 List에 넣은 후, 모든 연산자의 우선순위 순열에 대해 값을 계산해준다. +, *, - 3가지 연산자에 대해서 가능한 우선순위는 3!=6가지이다. dfs를 통해 이에 대한 순열을 구할 수 있다. 그 후 연산자 우선순위에 따라서 계산해준 후 최대값을 비교해서 얻어낸다. [코드] import java.util.*; class Solution { s..
[pro] 프로그래머스 level1 67256 키패드 누르기 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] *을 10, #을 12로 인덱스 설정 후 풀이함. [코드] class Solution { public String solution(int[] numbers, String hand) { String answer = ""; int leftIndex = 10; int rightIndex = 12; for(int num : numbers){ if(num==1 || num==4 || nu..
[운영체제] 6. Process Synchronization (2) 더보기 kocw 반효경 교수님의 운영체제 강의를 수강 후 작성한 글입니다. 1. The Critical-Section Problem n개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우, 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 critical section이 존재한다. Problem: 하나의 프로세스가 ciritical section에 있을 때, 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다. 충족 조건 1. Mutual Exclusion 프로세스 Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 critical sectoin에 들어가면 안 된다. 2. Progress 아무도 critical se..
[운영체제] 6. Process Synchronization (1) 더보기 kocw 반효경 교수님의 운영체제 강의를 수강 후 작성한 글입니다. 1. Race Condition Race condition(경쟁 상태): Race condition이란 두 개 이상의 프로세스가 공통 자원을 병행적으로 읽거나 쓰는 동작을 할 때, 공유 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. 경쟁 상태라는 말 그대로, 두 개 이상의 프로세스(스레드)가 하나의 자원에 접근하기 위해 경쟁함을 의미한다. Storage-Box(Memory, Address space)를 공유하는 Execution-Box(Cpu, Process)가 여러개 있는 경우 Race condition이 발생할 가능성이 있다. ex) Multiprocessor s..
[boj] 백준 1958 LCS 3 (c++) - DP [문제] https://www.acmicpc.net/problem/1958 1958번: LCS 3 첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다. www.acmicpc.net [풀이] 두 개의 문자열의 LCS를 구할 땐 2차원 DP 배열을 사용했었다. 세 개의 문자열 비교시에는 3차원 DP를 사용하도록 변경해주기만 하면 된다. 점화식은 똑같이 문자열이 일치하지 않을 경우엔 이전 LCS 중 max 값을 유지하고, 일치할 경우엔 지금까지의 LCS+1을 해준다. [코드] #include #include #include #include #include #include #includ..
[boj] 백준 6087 레이저 통신 (c++) - BFS [문제] https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net [풀이] 조건이 추가된 BFS 문제. 설치해야 할 거울 개수의 최솟값을 구하기 위해 visited 배열에 해당 좌표까지 도달하는데 사용된 거울의 최소 개수를 저장한다. 고려해야 하는 것은 크게 2가지이다. 1. 진행 방향과 그 다음 이동할 방향 -> 거울을 이용해 방향이 꺾이는 경우 이동하고자 하는 방향과 현재 진행 방향이 다르면 거울을 설치할 수 있다. 2. 거울의 개수 해당 ..
[boj] 백준 1726 로봇 (c++) - BFS [문제] https://www.acmicpc.net/problem/1726 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 www.acmicpc.net [풀이] 정점에서의 방향 전환이 가능하기 때문에 visited 배열을 방향성을 추가한 3차원 배열로 선언해주었다. 1. BFS 탐색. 처음에는 해당 방향으로 이동이 가능한지 탐색한다. 이때 Go k 명령에 대하여 3까지 이동이 가능하기 때문에 반복문을 통해 확인해준다. 주의할 점은 1부터 3까지 이동 가능한 지 탐색할 때, 앞 부분이 이동 불가능하다면 그 뒤 역시 궤도에 막혀 이동할 수 없기 때문에..
[boj] 백준 1941 소문난 칠공주 (c++) - DFS, BFS [문제] [풀이] 처음에는 단순 DFS로 풀이하려 했으나 +와 같이 꺾어지는 자리를 탐색할 수 없기 때문에 25명 중 7명을 뽑은 후, 조건에 만족하는지를 검사해야 한다. 1. 25명 중 7명을 순서 상관없이 뽑는 것이므로 DFS를 이용해 조합을 구한다. 2. 7명 조합에 대해 BFS로 자리가 이어져있는지 검사한다. 3. 이다솜 파가 4명 이상인지 검사한다. [코드] #include #include #include #include #include #include #include #define INF 987654321 using namespace std; char map[5][5]; int seat[5][5]; bool visited[5][5]; bool selected[26]; int ans; int d..