알고리즘

1. 문제소프티어 LV3 효도음식 문제를 자바로 풀어보았습니다!!https://softeer.ai/practice/7367 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  2. 문제 해결 방법 // 왼쪽에서 오른쪽으로의 최대 합 계산 int leftSum = nums[0]; leftMax[0] = leftSum; for (int i = 1; i = 0; i--) { rightSum = Math.max(nums[i], rightSum + nums[i]); rightMax[i] = Math.max(rightMax[i+1], rightSum); }예제에서 나와 있는 4 -6 1 2 -1..
문제https://softeer.ai/app/assessment/index.html?xid=413119&xsrfToken=JywRRIFE1orLEX8r8oOMeAFEZxdErCNO&testType=practice Candidate | Softeer Assessment UI softeer.ai  문제풀이모든 색깔의 점을 포함하면서 가장 작은 사각형을 만들어야되는 문제입니다.  모든 점을 포함하는 사각형의 넓이는 어떻게 구할까요? 예를 들면 K(색깔의 수)가 3이고(3, 7, 1) , (6, 5, 2), (7, 1, 3) 이라는 좌표가 주어졌다고 생각해봅시다. 이 세 점을 포함하는 최소 직사각형을 구하기 위해서는 3가지의 좌표에서- 가장 왼쪽 상단에 있는 좌표- 가장 오른쪽 상단에 있는 좌표- 가장 왼쪽 하..
문제https://softeer.ai/app/assessment/index.html?xid=167653&xsrfToken=Fr2KSShvvWT04sT2rolEp88x7sgzXUpO&testType=practice Candidate | Softeer Assessment UI softeer.ai 문제풀이문제 조건은 무엇인가?3초동안 각 친구들이 수확한 과일의 최대 수확량을 구해야 한다 이 때 친구들의 경로는 겹치면 안된다. 접근 방법은?DFS를 통해서 전체 경우의 수를 구해준다-> 한 친구의 3초동안의 수확이 끝나면 다음 친구의 수확량을 구해준다.(workerList에 각 친구의 시작위치를 저장해 놓고 idx를 파라미터로 넘겨서 다음 친구의 수확을 시작) 코드import java.io.*;import jav..
문제뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다.주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까?게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다.플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 만약 주사위를 굴린 결과가 100번 칸을 넘어간다면 이동할 수 없다. 도착한 칸이 사다리면, 사다리를 타고 위로 올라간다. 뱀이 있는..
문제인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다.연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다.예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자.2 0 0 0 1 1 00 0 1 0 1 2 00 1 1 0 1 0 00 1 0 0 0 0 00 0 0 0 0 1 10 1 0 0 0..
문제매일 아침, 세준이는 학교에 가기 위해서 차를 타고 D킬로미터 길이의 고속도로를 지난다. 이 고속도로는 심각하게 커브가 많아서 정말 운전하기도 힘들다. 어느 날, 세준이는 이 고속도로에 지름길이 존재한다는 것을 알게 되었다. 모든 지름길은 일방통행이고, 고속도로를 역주행할 수는 없다. 세준이가 운전해야 하는 거리의 최솟값을 출력하시오. 풀이과정dp를 이용해 해결했습니다. 1. dp배열을 만든다 (현재위치까지 오는데 얼마나 운전을 했는지 저장하는 용도) 2. dp배열에 정상적으로 갈경우 운전거리를 미리 세팅해준다. 3. 정상적으로 현재 위치에 도착하는 경우와, (지름길 시작한 곳 + 지름길의 길이를 비교해)dp배열에 저장해준다. 문제풀이import java.util.*;public class Main ..
문제당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 지나갈 수 없거나, 비어있어서 지나갈 수 있게 되어있다. 당신은 각 칸에서 인접한 6개의 칸(동,서,남,북,상,하)으로 1분의 시간을 들여 이동할 수 있다. 즉, 대각선으로 이동하는 것은 불가능하다. 그리고 상범 빌딩의 바깥면도 모두 금으로 막혀있어 출구를 통해서만 탈출할 수 있다.당신은 상범 빌딩을 탈출할 수 있을까? 만약 그렇다면 얼마나 걸릴까? 문제풀이보통 행과 열만 탐색했다면 이번엔 층이 추가된 버전! 상하좌우 윗층, 아래층을 탐색해주면서 탈출구를 찾아주면 된다.층수를 표현하기 위해 3차원 배열을 선언해주고..
문제뿌요뿌요의 룰은 다음과 같다.필드에 여러 가지 색깔의 뿌요를 놓는다. 뿌요는 중력의 영향을 받아 아래에 바닥이나 다른 뿌요가 나올 때까지 아래로 떨어진다.뿌요를 놓고 난 후, 같은 색 뿌요가 4개 이상 상하좌우로 연결되어 있으면 연결된 같은 색 뿌요들이 한꺼번에 없어진다. 이때 1연쇄가 시작된다.뿌요들이 없어지고 나서 위에 다른 뿌요들이 있다면, 역시 중력의 영향을 받아 차례대로 아래로 떨어지게 된다.아래로 떨어지고 나서 다시 같은 색의 뿌요들이 4개 이상 모이게 되면 또 터지게 되는데, 터진 후 뿌요들이 내려오고 다시 터짐을 반복할 때마다 1연쇄씩 늘어난다.터질 수 있는 뿌요가 여러 그룹이 있다면 동시에 터져야 하고 여러 그룹이 터지더라도 한번의 연쇄가 추가된다.남규는 최근 뿌요뿌요 게임에 푹 빠졌..
문제강호는 코딩 교육을 하는 스타트업 스타트링크에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다.스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이동하려고 한다.보통 엘리베이터에는 어떤 층으로 이동할 수 있는 버튼이 있지만, 강호가 탄 엘리베이터는 버튼이 2개밖에 없다. U버튼은 위로 U층을 가는 버튼, D버튼은 아래로 D층을 가는 버튼이다. (만약, U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다)강호가 G층에 도착하려면, 버튼을 적어도 몇 번 눌러야 하는지 구하는 프로그램을 작성하시..
문제수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.문자열의 뒤에 A를 추가한다.문자열의 뒤에 B를 추가하고 문자열을 뒤집는다.주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오.  문제풀이import java.util.*;public class Main { static String target; public static voi..