java 35

[JAVA/프로그래머스] 숫자의 표현

[문제] Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. [제한사항] n은 10,000 이하의 자연수 입니다. [입출력 예] n result 15 4 [풀이] class Solution { public int solution(int n) { int answer = 0; for(int i=1;i

[JAVA/프로그래머스] 올바른 괄호

[문제] 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 - "()()" 또는 "(())()" 는 올바른 괄호입니다. - ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. s answer "()()" true "(())()" true ")()(" false [풀이] import java.util.*; cla..

[JAVA/자료구조] 자바 Stack 사용법 / 스택 예시 총 정리 - 문자열 뒤집기, 괄호 짝 맞추기

▷ 스택(Stack)이란? 스택(stack)은 LIFO(라스트 인 퍼스트 아웃) 원리를 기반으로 구성된 요소들의 집합을 나타내는 추상적인 데이터 유형이다. 스택에서 수행되는 작업은 크게 세 가지로 구분이 가능하다. 요소를 스택의 맨 위에 추가하는 push, 스택의 맨 위 요소를 제거하는 pop, 스택의 맨 위에 있는 요소를 제거하지 않고 액세스하는 peek ▷ 스택(Stack)의 특징? 스택 구조는 위로 쌓아 올린 동전 혹은 접시와 같다. LIFO(Last-In First-out) > 스택에 마지막으로 추가된 요소가 가장 먼저 제거 (가장 나중에 쌓은 접시가 먼저 제거 됨) 스택의 한쪽 끝에서만 액세스 가능 > 일반적으로 스택의 'top'이라고 하는 한쪽 끝에서만 추가 및 제거된다. 일정한 시간 복잡성 ..

[JAVA] 자바 정수형 사용하기 / int형과 long형의 정확한 차이점

자바에서 정수를 담을 수 있는 변수 유형은 int / long 두 가지가 있다. 다음은 두 자료형의 차이를 정리한 것이다. int (4바이트) -2,147,483,648부터 2,147,483,647까지의 값을 저장할 수 있다. long(8바이트) int가 보유할 수 없는 더 큰 정수를 보유할 때 사용한다. -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 값을 저장할 수 있다. int형을 사용해 코드를 짜는 데 알 수 없는 오버플로우 오류가 난다면, 자료형을 적절히 사용했는지 의심해보자.

[JAVA/프로그래머스] 최솟값 만들기

[문제] 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21)..

[JAVA/프로그래머스] 직사각형 별찍기

[문제] 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. [입력] 5 3 [출력] ***** ***** ***** [풀이] import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); for(int i=0;i

[JAVA/프로그래머스] 가운데 글자 가져오기

[문제] 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. s는 길이가 1 이상, 100이하인 스트링입니다. s return "abcde" "c" "qwer" "we" [풀이] class Solution { public String solution(String s) { String answer = ""; if(s.length()%2==1){ answer = s.substring(s.length()/2,s.length()/2+1); }else{ answer = s.substring(s.length()/2-1,s.length()/2+1); } return answer; } } 깔끔하고 단순하게 풀어보았다.

[JAVA/프로그래머스] 없는 숫자 더하기

[문제] 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 원소 ≤ 9 numbers의 모든 원소는 서로 다릅니다. numbers result [1,2,3,4,6,7,8,0] 14 [5,8,4,0,6,7,9] 6 입출력 예 #1 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다. [풀이] import java.util.*; import java.util.stream.*; class Solution { public int solution..

[JAVA/프로그래머스] 최댓값과 최솟값

[문제] 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" [풀이] import java.util.Arrays; class Solution { public String solution(String s) { String answer = ""; String[] st = s.split(" "); int[] ..

[JAVA/프로그래머스] 콜라츠 추측 풀이

[문제] 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 입력된 수, nu..