본문 바로가기
Algorithm(알고리즘)/프로그래머스 고득점 Kit

Java 프로그래머스 Level1 연습문제 모음 #2 (11~20)

by Jun_N 2020. 12. 30.

11. 수박수박수박수박

class Solution {
    public String solution(int n) {
        String result = "";
       
        for (int i = 0; i < n; i++){
          result += i % 2 == 0 ? "수" : "박";
        }
        
        return result;
    }
}

12. 문자열을 정수로 바꾸기

class Solution {
    public int solution(String s) {
        return Integer.valueOf(s);
    }
}

 

Integer.valueOf(문자열) 을 하면 부호도 함께 숫자로 바꿔준다.


13.  내적

class Solution {
    public int solution(int[] a, int[] b) {
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum+= a[i] * b[i];
        }
        return sum;
    }
}

14. 시저 암호

-> 아스키 코드 사용법 익숙해지기

class Solution {
    public String solution(String s, int n) {
        String answer = "";
		
		for(int i=0; i<s.length(); i++) {
			char alpa = s.charAt(i);
			
			if(alpa >= 'a' && alpa <= 'z') {
				if(alpa + n > 'z') answer += (char)(alpa + n-26);
				else answer += (char)(alpa + n);
			}
			else if(alpa >= 'A' && alpa <= 'Z') {
				if(alpa + n > 'Z') answer += (char)(alpa + n-26);
				else answer += (char)(alpa + n);
			}
			else answer += (char)alpa;

		}
		
		return answer;

    }
}

15. 약수의 합

class Solution {
    public int solution(int n) {
        int sum = 0;
        
        for (int i = 1; i < n + 1; i++) {
            if (n % i == 0) {
                sum += i;
            }
        }
        
        return sum;
    }
}

16. 이상한 문자 만들기

class Solution {
    public String solution(String s) {
        int index = 0;
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                sb.append(' ');
                index = 0;
            } else {
                if(index % 2 != 0) {
                    sb.append(Character.toLowerCase(s.charAt(i)));
                    index ++;
                } else {
                    sb.append(Character.toUpperCase(s.charAt(i)));
                    index ++;
                }
            }
        }

        return sb.toString();
    }
}

 

*배운 것 

Character.toLowerCase(Character) 

Character.toUpperCase(Character)

s.charAt(i)==' '를 통해 split을 안해도 스페이스 확인 가능.


17. 자릿수 더하기

방법 1) 타입 변환

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String[] array = String.valueOf(n).split("");
        for(String s : array){
            answer += Integer.parseInt(s);
        }
        return answer;
    }
}

방법 2) %, / 이용

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;

        while (n > 0) {
            answer += n % 10;
            n /= 10;
        }

        return answer;
    }
}

18. 자연수 뒤집어 배열로 만들기

방법 1) int로 풀기

class Solution {
    public int[] solution(long n) {
        int[] nList = new int[(int)(Math.log10(n)+1)];
        int count = 0;

        while (n > 0) {
            nList[count] = (int)(n % 10);
            n /= 10;
            count++;
        }
        return nList;
    }
}

방법 2) String 변환

class Solution {
  public int[] solution(long n) {
      String s = String.valueOf(n);
      StringBuilder sb = new StringBuilder(s);
      sb = sb.reverse();
      String[] ss = sb.toString().split("");

      int[] answer = new int[ss.length];
      for (int i=0; i<ss.length; i++) {
          answer[i] = Integer.parseInt(ss[i]);
      }
      return answer;
  }
}

*배운 것

- Math.log10(n)+1 을 하면 int형의 자리수를 파악할 수 있다. 예) 1234 -> 4

- StringBuilder.reverse() 는 문자열을 거꾸로 바꿔줌.

 


19. 정수 내림차순 배치하기

방법 1)

import java.util.*;
class Solution {
    public long solution(long n) {
        Integer[] nList = new Integer[(int) (Math.log10(n) + 1)];
        int count = 0;
        long result = 0;

        while (n > 0) {
            nList[count] = (int) (n % 10);
            n /= 10;
            count++;
        }
        Arrays.sort(nList, Collections.reverseOrder());
        for (int i = 0; i < nList.length; i++) {
            result += nList[i];
            result *= 10;
        }
        
        return result/10;
    }
}

방법 2) StringBuilder reverse

import java.util.*;

class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);

        return Long.parseLong(sb.reverse().toString());
  }
}
import java.util.Arrays;

public class ReverseInt {
    public int reverseInt(int n){
        String str = Integer.toString(n);
        char[] c = str.toCharArray();
        Arrays.sort(c);
        StringBuilder sb = new StringBuilder(new String(c,0,c.length));  
        return Integer.parseInt(((sb.reverse()).toString()));
    }
}

*배운 것

- 내림차순 정렬 => Arrays.sort(array,Collections.reverseOrder()) 이다. 단 array는 int[]가 아니라 Integer[]로 해야된다.

includestdio.tistory.com/1

 

[Java] Integer와 int의 차이

1. Primitive 자료형 - Wrapper 클래스 관계  int  primitive 자료형 (long, float, double ...)  산술 연산이 가능하다.  null로 초기화 할 수 없다.  Integer  Wrapper 클래스 (객체)  Unboxing을 하지..

includestdio.tistory.com

- StringBuilder.reverse() 는 문자열을 거꾸로 바꿔줌.


20. 정수 제곱근 판별

class Solution {
    public long solution(long n) {
        long target = (long) Math.sqrt(n);

        if (target*target==n){
            return (target+1)*(target+1);
        }
        return -1;
    }
}

 

*배운 것

- 제곱근 구하기  Math.sqrt()