프로그래머스는 처음 사용해봐서 처음에 살짝 당황;;
2024.03.05
두 수의 합
class Solution {
public int solution(int num1, int num2) {
int answer = -1;
answer = num1 + num2;
return answer;
}
}
두수의 차
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = num1 - num2;
return answer;
}
}
나이 출력
class Solution {
public int solution(int age) {
int answer = 0;
answer = 2022 - age + 1;
return answer;
}
}
두 수의 곱
class Solution {
public int solution(int num1, int num2) {
int answer = num1 * num2;
return answer;
}
}
몫 구하기
class Solution {
public int solution(int num1, int num2) {
int answer = num1/num2;
return answer;
}
}
숫자 비교하기
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if(num1 == num2)
answer = 1;
else
answer = -1;
return answer;
}
}
//삼항 연산자 이용하기
int answer = (num1 == num2) ? 1 : -1;
(조건문) ? true결과 : false결과
2024.03.07
두 수의 나눗셈
class Solution {
public int solution(float num1, float num2) {
int answer = 0;
float fanswer = num1/num2;
answer = (int)(fanswer * 1000);
return answer;
}
}
이 문제 진짜 기발한 풀이로 푼 사람이 있었음.
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
return num1 * 1000 / num2;
}
}
분수의 덧셈
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int denom3, numer3 = 0;
denom3 = denom1 * denom2;
numer3 = (numer1*denom2) + (numer2*denom1);
int max = 1;
for(int i=1; i<=denom3 && i<=numer3;i++)
{
if(denom3 % i == 0 && numer3 % i ==0)
max = i;
}
numer3 = numer3/max;
denom3 = denom3/max;
int[] answer = {numer3,denom3};
return answer;
}
}
배열 두 배 만들기
class Solution {
public int[] solution(int[] numbers) {
int[] answer = numbers.clone();
for(int i =0; i< numbers.length; i++)
{
numbers[i] = numbers[i] * 2;
answer[i] = numbers[i];
}
return answer;
}
}
2024.03.11
나머지 구하기
class Solution {
public int solution(int num1, int num2) {
int answer = -1;
answer = num1%num2;
return answer;
}
}
중앙값 구하기
import java.util.*;
class Solution {
public int solution(int[] array) {
int[] arrays = array;
Arrays.sort(arrays);
int num = 0;
num = (array.length/2);
int answer = arrays[num];
return answer;
}
}
최빈값 구하기
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
Arrays.sort(array);
int max = array[array.length -1];
int cnt[] = new int [max + 1];
for(int i = 0; i <array.length; i++)
{
cnt[array[i]]++;
}
//Arrays.sort(cnt); // 이 부분이 있고 없고 차이가 왜 생기는 지??
//경우에 따라 정상처리되는 경우가 있고 안되는 경우도 있음 ㅜㅜㅜㅜㅜ
max = cnt[0];
for(int i = 1; i<cnt.length; i++)
{
if(max<cnt[i])
{
max = cnt[i];
answer = i;
}
else if(max == cnt[i])
{
answer =-1;
}
}
return answer;
}
}
짝수는 싫어요
public int[] solution(int n) {
int[] answer = {};
answer[0] = 1;
if(n%2 == 0)
for(int i = 1; i<(n/2) -1; i++)
{
answer[i] = answer[i-1] + 2;
}
else
for(int i = 1; i<n/2; i++)
{
answer[i] = answer[i-1] + 2;
}
return answer;
}
2024.03.12
피자 나눠 먹기(1)
class Solution {
public int solution(int n) {
int answer = 0;
if(n%7 == 0)
answer = n/7;
else
answer = n/7 +1;
return answer;
}
}
피자 나눠 먹기(2)
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1;i <100;i ++)//i피자 개수 //while(true)로 실행시키면 break;없어도 됨
{
if((i*6)%n==0)
{
answer = i;
break;
}
}
return answer;
}
}
피자 나눠 먹기(3)
class Solution {
public int solution(int slice, int n) {
int answer = (n%slice == 0)? n/slice : n/slice+1;
return answer;
}
}
배열의 평균값
class Solution {
public double solution(int[] numbers) {
double answer = 0;
for(int i = 0; i<numbers.length; i++)
{
answer += numbers[i];
}
answer /= numbers.length;
return answer;
}
}
2024.03.13
옷가게 할인 받기
class Solution {
public int solution(int price) {
double answer = 0;
if(price>=100000 && price<300000)
answer = price*0.95;
else if(price>=300000 && price<500000)
answer = price*0.9;
else if(price>=500000)
answer = price*0.8;
else
answer = price;
return (int)answer;
}
}
아이스 아메리카노
class Solution {
public int[] solution(int money) {
int[] answer = {0,0};
int americano = 5500;
answer[0] = money/americano;
answer[1] = money%americano;
return answer;
}
}
배열 뒤집기
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int j = 0;
for(int i = num_list.length - 1; i >= 0; i--)
{
answer[j] = num_list[i];
j++;
}
return answer;
}
}
각도기
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int j = 0;
for(int i = num_list.length - 1; i >= 0; i--)
{
answer[j] = num_list[i];
j++;
}
return answer;
}
}
짝수의 합
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 0; i<=n;i++)
{
if(i%2 == 0)
answer += i;
}
return answer;
}
}
머쓱이보다 키 큰 사람
import java.util.*;
class Solution {
public int solution(int[] array, int height) {
int answer = 0;
Arrays.sort(array);
for(int i = 0; i<array.length; i++)
{
if(array[i]>height)
{
answer += 1;
}
}
return answer;
}
}
배열 원소의 길이
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
for(int i = 0; i<strlist.length; i++)
{
answer[i] = strlist[i].length();
}
return answer;
}
}
length와 length()의 차이점
.length 배열의 길이
.length() 문자열 길이
2024.03.14
중복된 숫자 개수
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
for(int i = 0; i < array.length; i++)
{
if(array[i] == n)
answer++;
}
return answer;
}
}
편지
class Solution {
public int solution(String message) {
int answer = message.length() *2;
return answer;
}
}
양꼬치
class Solution {
public int solution(int n, int k) {
int answer = 0;
if(n/10 != 0)
{
k -= n/10;
answer = n*12000 + k*2000;
}
else
answer = n*12000 + k*2000;
return answer;
}
}
문자열 뒤집기
class Solution {
public String solution(String my_string) {
String answer = "";
StringBuffer sb = new StringBuffer(my_string);
answer = sb.reverse().toString();
return answer;
}
}
https://yangbox.tistory.com/58
StringBuffer(StringBuilder) 클래스 기본 및 사용
StringBuffer(StringBuilder) 클래스 기본 및 사용 StringBuffer(StringBuilder) 클래스는 문자열에 대한 많은 편의기능을 제공한다. 그래서 필요에 따라 문자열을 작업할 때 String 객체가 아닌 StringBuffer(StringBuild
yangbox.tistory.com
세균 증식
class Solution {
public int solution(int n, int t) {
int answer = n;
for(int i = 0; t>i; i++)
{
answer *= 2;
}
return answer;
}
}
직각삼각형 출력하기
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String star = "";
for(int i = 0;i<n;i++)
{
star += "*";
System.out.println(star);
}
}
}
repeat()함수를 사용하면 간단하게 해결 가능
for(int i=1; i<=n; i++){
System.out.println("*".repeat(i));
}
String 메서드 중 하나로 String 문자열을 파라미터의 주어진 횟수만큼 반복한다.
파라미터가 0이면 빈 문자열 반환
파라미터가 음수면 illegalArgumentExceptionthrow에러 반환
파라미터가 1이면 문자열을 그대로 반환
짝수 홀수 개수
class Solution {
public int[] solution(int[] num_list) {
int[] answer = {0,0};
for(int i = 0; i<num_list.length; i++)
{
if(num_list[i]%2 == 0)
answer[0] +=1;
else
answer[1] +=1;
}
return answer;
}
}
2024.03.18
문자 반복 출력하기
class Solution {
public String solution(String my_string, int n) {
String answer = "";
for(int i = 0; i<my_string.length(); i++)
{
for(int j = 0; j<n; j++)
{
answer += (my_string.charAt(i));
}
}
return answer;
}
}
특정 문자 제거하기
class Solution {
public String solution(String my_string, String letter) {
String answer = "";
char Letter = letter.charAt(0);
for(int i = 0; i<my_string.length(); i++)
{
if(my_string.charAt(i) != Letter)
{
answer += my_string.charAt(i);
}
}
return answer;
}
}
//replace를 이용한 풀이
class Solution {
public String solution(String my_string, String letter) {
String answer = "";
answer = my_string.replace(letter, "");
return answer;
}
}
배열 자르기
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2-num1+1];
int j = 0;
for(int i = 0; i<numbers.length; i++)
{
if(i>=num1 && i<=num2)
{
answer[j] += numbers[i];
j++;
}
}
return answer;
}
}
외계행성의 나이
class Solution {
public String solution(int age) {
String answer = "";
String temp = Integer.toString(age);
for(int i = 0; i< temp.length(); i++)
{
answer += (char)((char)temp.charAt(i) + 49);
}
return answer;
}
}
진료순서 정하기
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
for(int i = 0; i<emergency.length; i++)
{
for(int j = 0; j<emergency.length; j++)
{
if(emergency[i] < emergency[j])
answer[i] ++;
}
answer[i]++;
}
return answer;
}
}
순서쌍의 개수
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1; i<=n; i++)
{
if(n%i == 0)
answer++;
}
return answer;
}
}
2024.03.21
개미 군단
class Solution {
public int solution(int hp) {
int answer = 0;
int big = hp/5;
int middle = (hp%5)/3;
int small = (hp%5)%3;
return answer = big + middle + small;
}
}
모스부호(1)
class Solution {
public String solution(String letter) {
String answer = "";
String[] morseList = {".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",".-..","--","-.",
"---",".--.","--.-",".-.","...","-","..-","...-",
".--","-..-","-.--","--.."};
String[] morse;
morse = letter.split(" ");
for(int i = 0; i<morse.length; i++)
for(int j = 0; i<morseList.length; j++)
if(morse[i].equals(morseList[j]))
{
answer +=(char)(j + 'a');
break;
}
return answer;
}
}
문자열을 비교할 때에는 .eqauls()를 사용해야 한다.
==연산자는 참조 동일성을 확인한다. 두 참조가 메모리의 동일한 개체를 가리키는지 확인한다. 동일한 문자열 개체를 참조하는지 확인하는 것.
가위 바위 보
class Solution {
public String solution(String rsp) {
String answer = "";
String[] arr = rsp.split("");
for(int i = 0; i<arr.length;i++)
{
if(arr[i].equals("2"))
answer += 0;
else if(arr[i].equals("0"))
answer += 5;
else
answer += 2;
}
return answer;
}
}
구슬을 나누는 경우의 수
class Solution {
public int solution(int balls, int share) {
return combination(balls, share);
}
public static int combination(int balls, int share) {
if (balls == share || share == 0) return 1;
return combination((balls - 1), (share - 1)) + combination(balls - 1, share);
}
}
내가 할려고 한 풀이는 for문이 많이 반복되서 다른 블로그 풀이를 찾아봤음!
이 풀이가 간단하고 ...더보기
2024.04.29
공 던지기
class Solution {
public int solution(int[] numbers, int k) {
int answer = 0;
//int index = (0 + k)%numbers.length;
int cnt = 0; //한 명 건너뛰기
int index = 0;
while(cnt < k){
if(index >=numbers.length)
index %=numbers.length;
answer = numbers[index];
index += 2;
cnt++;
}
return answer;
}
}
if문 부분은 기억해두고 있으면 다른데서도 응용할 기회가 있을 것 같음.
배열 회전하기
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if(direction.equals("right"))
{
for(int i = 0; i<numbers.length-1; i++)
{
answer[i+1] = numbers[i];
}
answer[0] = numbers[numbers.length-1];
}
else
{
for(int i = numbers.length-1; i>0; i--)
{
answer[i-1] = numbers[i];
}
answer[numbers.length-1] = numbers[0];
}
return answer;
}
}
알고리즘이 어려운 건 아니었는데 생각하는 게 복잡하다. 머리가 굳은 듯.(good)