문제설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 sanswer"()()"true"(())()"true")()("false"(()("false 나의 코드스택이 아니라 큐로 문제를 ..
jjuya
문제설명ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다.지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터(행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 게임 맵의 상태 maps가 매개변수로 주어질 때, 캐릭터가 상대 팀 진영에 도착하기 위해서 지나가야 하는 칸의 개수의 최솟값을 return 하도록 solution 함수를 완성해 주세요. 단, 상대 팀 진영에 도착할 수 없을 때는 -1을 return 해주세요. 제한사항maps는 n x m 크기의 게임 맵의 상태가 들어있..
백준 2750번 수 정렬하기시간제한메모리제한1 초128 MB 문제N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 💡코드작성자바에서는 sort를 사용할 수도 있지만 버블 정렬로 문제 해결해 보기N(정렬할 수 개수)A(정렬할 배열 선언)for(i:0~N-1){ for(j : 0~N-1-i){ 현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기 }}public cla..
정렬 알고리즘은 데이터를 기준에 맞추어 순서대로 나열하는 것을 목표로 함데이터를 구조화하여 탐색, 비교, 분석 등의 작업을 효과적으로 수행 가능알고리즘의 동작방식과 성능을 이해하고 활용 선택정렬 (Selection Sort)정렬 대상의 데이터 중 가장 작은 데이터를 선택하여 앞으로 위치시키는 정렬 방법시간복잡도 : O(N^2)오름차순 최솟값 선택내림차순 최댓값 선택남은 정렬 부분의 가장 앞에 있는 데이터와 swap 하는 것 매번 작은 최소/ 최대 데이터를 찾는 과정 중 불필요하게 중복되는 연산이 있지만, 구현이 간단ex) 오름차순 정렬이 안된 부분 중 가장 최솟값과 가장 처음 부분이랑 swap코드int[] arr = {5,1,2,8,3}for(int i = 0; i arr[j]){ ..
문제설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.-1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해 주세요. 제한사항주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000..
재귀함수하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘재귀는 문제를 작은 부분으로 나누어 해결하는 방식에 효과적으로 적용 가능!함수가 자기 자신을 호출하여 문제를 해결하는 방법기본 조건과 재귀 호출로 구성문제를 반복적으로 나누어 해결하는 반복적인 호출 방법으로 효율성에 초점을 두지 않음단순 반복적 문제인 피보나치 수열, 팩토리얼 계산 등 적용 0~N까지의 합 코드package org.example;public class N의합 { public static void main(String[] args) { System.out.println(rec(10)); } public static int rec(int n){ if(n == 0) return 0;..
백준 2178번 미로탐색 시간제한메모리 제한1 초192 MB 문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들..
BFS(Breadth-First Search)너비우선탐색 그래프 완전 탐색 기법 중 하나 - 큐를 이용해서 그래프의 모든 노드 탐색 시작 노드에서 출발 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘 큐에 인접한 노드 혹은 노드의 좌표들을 넣어준다 큐가 비었다면? 인접 노드들이 없으므로 탐색이 종료된다기능특징시간복잡도그래프 완전 탐색FIFO(선입선출) 탐색 Queue자료구조 이용O(V + E ) v : 노드 수 E : 에지 수* 경로가 여러개 일 때 최단 경로를 보장 너비우선탐색 핵심이론한번 방문한 노드를 방문하면 안 됨 : 노드 여부를 체크할 배열이 필요그래프 : 인접 리스트큐를 이용한 탐색import java.util.LinkedList; import java.util.Queue; publi..
DFS(Depth-First Search) 깊이우선 탐색 그래프 완전탐색 기법 중 하나 - 스택을 이용해서 그래프의 모든노드 탐색그래프의 시작노드에서 출발 탐색할 한쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 탐색하는 알고리즘기능특징시간복잡도그래프 완전 탐색재귀함수로 구현 Stack 자료구조 이용(FILO) - 먼저 들어온 데이터가 나중에 나간다O(V + E )v : 노드 수E : 에지 수* 재귀함수 : 스택 오버플로 유의 깊이우선탐색 핵심이론한번 방문한 노드를 방문하면 안됨 : 노드 여부를 체크할 배열이 필요그래프 : 인접리스트후입선출의 특징 가지고 있음 / 스택을 이용한 탐색public class Dfs { public static void main(String[]..
문제 설명프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100% 일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수입니..