10/28 알고리즘 문제
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
public int solution(int num1, int num2) {
return num1-num2;
}
정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.
public int solution(int num1, int num2) {
return num1*num2;
}
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
public int solution(int num1, int num2) {
return num1/num2;
}
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
제한사항
0 < age ≤ 120
나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.
public int solution(int age) {
return 2022-age+1;
}
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ num1 ≤ 10,000
0 ≤ num2 ≤ 10,000
public int solution(int num1, int num2) {
return num1==num2?1:-1;
}
정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.
public int solution(int num1, int num2) {
return num1+num2;
}
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
public int solution(int num1, int num2) {
return (int) (num1 / (num2*1.0)*1000);
}
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
예각 : 0 < angle < 90
직각 : angle = 90
둔각 : 90 < angle < 180
평각 : angle = 180
제한사항
0 < angle ≤ 180
angle은 정수입니다.
public int solution(int angle) {
int answer = 0;
if(angle<90){
return 1; //예각
}else if(angle==90){
return 2; //직각
}else if(angle<180){
return 3; // 둔각
}else{
return 4; //평각
}
}
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
public int solution(int n) {
int answer = 0;
for(int i=2;i<=n;i+=2){
answer+=i;
}
return answer;
}
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ numbers의 원소 ≤ 1,000
1 ≤ numbers의 길이 ≤ 100
정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
public double solution(int[] numbers) {
double answer=0;
for(double i : numbers){
answer+=i;
}
return answer/numbers.length;
}
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
제한 조건
num은 int 범위의 정수입니다.
0은 짝수입니다.
public String solution(int num) {
return num%2==0?"Even":"Odd";
}
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한사항
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
public double solution(int[] arr) {
double answer=0;
for(double i : arr){
answer+=i;
}
return answer/arr.length;
}
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N의 범위 : 100,000,000 이하의 자연수
public int solution(int n) {
int answer = 0;
while(n/1>0){
answer+=n%10;
n/=10;
}
return answer;
}
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
if(n%i==0){
answer+=i;
}
}
return answer;
}
문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
3 ≤ n ≤ 1,000,000
public int solution(int n) {
int answer = 1;
while(n%answer!=1){
answer+=1;
}
return answer;
}
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.
public long[] solution(long x, int n) {
long[] answer = new long[n];
long tmp=x;
for(int i=0;i<n;i++){
answer[i]=x;
x+=tmp;
}
return answer;
}
x가 int범위를 넘어설 수 있으니 주의!
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
public int[] solution(long n) {
int[] answer = {};
answer= new int[(n+"").length()];
for(int i=0;i<answer.length;i++){
answer[i]=(int)(n%10);
n/=10;
}
return answer;
}
answer[i]=(int)(n%10); 이거때매 개고생함
answer[i]=(int)n%10 여기에서 수가 크면 잘못된 값이 넘어감 ㅠㅠㅠㅠㅠㅠ 아오
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.
public int solution(String s) {
return Integer.parseInt(s);
}
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
public long solution(long n) {
return (long)Math.sqrt(n)*(long)Math.sqrt(n)==n? (long) Math.pow(Math.sqrt(n)+1,2.0):-1;
}
Math.sqrt(n) : n의 제곱근
Math.pow(n1,n2) : n1를 n2제곱(n2승)
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n은 1이상 8000000000 이하인 자연수입니다.
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
int leng =(n+"").length();
long[] arr = new long[leng];
String str ="";
for(int i=0;i<=leng-1;i++){
arr[i]=n%10;
n/=10;
}
Arrays.sort(arr);
for(int i=arr.length-1;i>=0;i--){
str+=arr[i];
}
answer=Long.parseLong(str);
return answer;
}
}
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
x는 1 이상, 10000 이하인 정수입니다.
public boolean solution(int x) {
int leng = (x+"").length();
int sum= 0;
int tmp=x;
for(int i=0;i<=leng;i++){
sum+=(tmp%10);
tmp/=10;
}
if(x%sum==0){
return true;
}
return false;
}
두 정수 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의 대소관계는 정해져있지 않습니다.
public long solution(int a, int b) {
long answer = 0;
int tmp=0;
if(b<a){
tmp=a;
a=b;
b=tmp;
}
for(int i=a;i<=b;i++){
answer+=i;
}
return answer;
}
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을 반환해 주세요.
public int solution(long num) {
if(num==1){
return 0;
}
for(int i=0;i<=500;i++){
if(num==1){return i;}
if(num%2==0){
num/=2;
}else{
num=(num*3)+1;
}
}
return -1;
}
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
제한 사항
seoul은 길이 1 이상, 1000 이하인 배열입니다.
seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
"Kim"은 반드시 seoul 안에 포함되어 있습니다.
public String solution(String[] seoul) {
int cnt=0;
for(String st : seoul){
if(!st.equals("Kim")){
cnt++;
}else{
break;
}
}
return "김서방은 "+cnt+"에 있다";
}
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {};
int cnt = 0;
for (int i : arr) {
if (i % divisor == 0) {
cnt++;
}
}
answer = new int[cnt];
cnt=0;
for(int i:arr){
if (i % divisor == 0) {
answer[cnt]=i;
cnt++;
}
}
Arrays.sort(answer);
if(cnt==0){
answer = new int[1];
answer[0] = -1;
}
return answer;
}
}
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
absolutes의 길이는 1 이상 1,000 이하입니다.
absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
int cnt =0;
for(boolean i :signs){
if(!i){
absolutes[cnt]*=-1;
}
answer+=absolutes[cnt];
cnt++;
}
return answer;
}
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
public String solution(String phone_number) {
String answer = "";
for(int i=0; i<phone_number.length()-4;i++){
answer+="*";
}
answer+=phone_number.substring(phone_number.length()-4);
return answer;
}
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
public int solution(int[] numbers) {
int sum=0;
for(int i:numbers){
sum+=i;
}
return 45-sum;
}