Algorithm 215

Programmers / Level 1 / 두 정수 사이의 합

[문제설명] 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. [제한사항] a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. [입출력 예] a b return 3 5 12 3 3 3 5 3 12 import java.util.*; class Solution { public long solution(int a, int b) { long answer = 0; int big = Math.max(a,b); int small = M..

Programmers / Level 1 / 가운데 글자 가져오기

[문제설명] 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. [제한사항] s는 길이가 1 이상, 100이하인 스트링입니다. [입출력 예] s return "abcde" "c" "qwer" "we" class Solution { public String solution(String s) { String answer = ""; int length = s.length(); if(length%2==0) { answer += s.charAt(length/2-1); answer += s.charAt(length/2); } else { answer += s.charAt(length/2); } return answer; } }

Programmers / Level 1 / 나누어 떨어지는 숫자 배열

[문제설명] array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. [제한사항] arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. [입출력 예] arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] import java.util.ArrayList; import java.util.Array..

[알고리즘] 유클리드 호제법

유클리드 호제법 (유클리드 알고리즘)은 두 수의 최대공약수를 구하는 알고리즘이다. 호제법이란 두 수가 서로 상대방 수를 나눠 결국 원하는 수를 얻는 알고리즘이다. 유클리드 호제법을 이해하기 위해서는 MOD 연산에 대해 알아야 한다 MOD 연산이란? 두 값을 나눈 나머지를 구하는 연산! 예로, 1112와 695의 최대공약수를 구해보자 먼저, 큰 수를 작은 수로 나눈 나머지를 구한다. (MOD 연산 수행) 1112 MOD 695 = 417 그 후, 나눴던 수와 나머지로 또 MOD 연산을 한다. 695 MOD 417 = 278 이 과정을 계속 반복한다! 417 MOD 278= 139 278 MOD 139 = 0 나머지가 0이 됐을 때, 마지막 계산에서 나누는 수로 사용된 숫자 139가 1112와 695의 최대..

Algorithm 2022.06.22

Programmers / Level 1 / 최대공약수와 최소공배수

[문제설명] 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. [제한사항] 두 수는 1이상 1000000이하의 자연수입니다. [입출력 예] n m return 3 12 [3, 12] 2 5 [1, 10] 내가 작성한 코드 class Solution { public int[] solution(int n, int m) { int min = 0; int max = 0; if(n < m) { if(m%n==0) { max = n; min = m; } els..

Programmers / Level 1 / 문자열 내림차순으로 배치하기

[문제설명] 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. [제한사항] str은 길이 1 이상인 문자열입니다. [입출력 예] s return "Zbcdefg" "gfedcbZ" import java.util.*; class Solution { public String solution(String s) { String answer = ""; String arr[] = s.split(""); Arrays.sort(arr, Collections.reverseOrder()); for(int i=0; i

Programmers / Level 1 / 서울에서 김서방 찾기

[문제설명] String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. [제한사항] seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. [입출력 예] seoul return ["Jane", "Kim"] "김서방은 1에 있다" class Solution { public String solution(String[] seoul) { String answer = ""; int x = 0; for(in..

Programmers / Level 1 / 문자열 내 마음대로 정렬하기

[문제설명] 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. [제한사항] strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. [입출력 예] strings n return ["sun"..

Programmers / Level 1 / 이상한 문자 만들기

[문제설명] 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. [제한사항] 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. [입출력 예] s return "try hello world" "TrY HeLlO WoRlD" class Solution { public String solution(String s) { String answer = ""; String[] arr = s.split(""); int cnt = 0; for(int i=0; i