21. 제일 작은 수 제거하기
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
ArrayList<Integer> arr2 = new ArrayList<Integer>();
if(arr.length <=1) {
return new int[] {-1};
}
for(int i=0; i<arr.length; i++) {
arr2.add(arr[i]);
}
int min = Collections.min(arr2);
int index_of_min = arr2.indexOf(min);
arr2.remove(index_of_min);
answer = new int[arr2.size()];
for(int i=0; i<arr2.size(); i++) {
answer[i] = arr2.get(i);
}
return answer;
}
}
=> ArrayList에서 Collections 사용법 익숙해지기
Collections.min()을 통해 ArrayList에 있는 최소값을 구 할 수 있고 indexOf(min)을 통해 index값도 구할 수 있다.
22. 짝수와 홀수
class Solution {
public String solution(int num) {
return num % 2 == 0 ? "Even": "Odd";
}
}
23. 최대 공약수와 최소공배수
class Solution {
public int[] solution(int n, int m) {
int[] answer = new int[2];
int temp=1;
int gcd=n*m;
while(temp!=0){
temp=m%n;
m=n;
n=temp;
}
answer[0]=m;
answer[1]=gcd/m;
return answer;
}
}
유클리드 호제법 사용.
24. 콜라츠 추측
class Solution {
public int solution(int num) {
int result = 0;
long n=num;
while (n != 1) {
n = n % 2 == 0 ? n / 2 : n * 3 + 1;
result++;
if (result >= 500) {
result = -1;
break;
}
}
return result;
}
}
num의 수가 너무 크기때문에 long으로 바꿔주어야 한다는게 포인트.
25. 평균 구하기
class Solution {
public double solution(int[] arr) {
int sum = 0;
double aver = 0.0;
for (int n : arr) {
sum += n;
}
aver = (double) sum / arr.length;
return aver;
}
}
방법 2) API 사용
class Solution {
public double solution(int[] arr) {
return (int) Arrays.stream(array).average().orElse(0);
}
}
26. 하샤드 수
class Solution {
public boolean solution(int x) {
int arr=x;
int sum = 0;
boolean answer = true;
while (arr > 0) {
sum += arr % 10;
arr /= 10;
}
answer = (x % sum == 0) ? true : false;
return answer;
}
}
방법 2) String 사용
public class HarshadNumber{
public boolean isHarshad(int num){
String[] temp = String.valueOf(num).split("");
int sum = 0;
for (String s : temp) {
sum += Integer.parseInt(s);
}
if (num % sum == 0) {
return true;
} else {
return false;
}
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
HarshadNumber sn = new HarshadNumber();
System.out.println(sn.isHarshad(18));
}
}
27. 핸드폰 번호 가리기
class Solution {
public String solution(String phone_number) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < phone_number.length(); i++) {
if (i < phone_number.length() - 4) {
sb.append("*");
} else {
sb.append(phone_number.charAt(i));
}
}
return sb.toString();
}
}
28. 행렬의 덧셈
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
29. x만큼 간격이 있는 n개의 숫자
class Solution {
public long[] solution(long x, int n) {
long[] answer = new long[n];
for (int i=0; i< n; i++){
answer[i]=x*(i+1);
}
return answer;
}
}
x를 long으로 바꿔주는게 포인트..
30. 직사각형 별찍기
import java.util.Scanner;
public 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<b;i++){
for (int j=0;j<a;j++){
System.out.print("*");
}
System.out.println("");
}
}
}
31. 문자열 내림차순으로 배치하기
방법 1)
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
String[] sArr = s.split("");
Arrays.sort(sArr);
List<String> list = Arrays.asList(sArr);
Collections.reverse(list);
sArr = list.toArray(new String[list.size()]);
for (String ss : sArr) {
answer+=ss;
}
return answer;
}
}
방법 2)
import java.util.Arrays;
public class ReverseStr {
public String reverseStr(String str){
char[] sol = str.toCharArray();
Arrays.sort(sol);
return new StringBuilder(new String(sol)).reverse().toString();
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
ReverseStr rs = new ReverseStr();
System.out.println( rs.reverseStr("Zbcdefg") );
}
}
import java.util.Arrays;
public class ReverseStr {
public String reverseStr(String str){
char[] ch = str.toCharArray();
Arrays.sort(ch);
StringBuffer st = new StringBuffer(String.valueOf(ch));
st.reverse();
return st.toString();
}
}
32. 문자열 다루기 기본
class Solution {
public boolean solution(String s) {
if (s.length() !=4 && s.length() !=6){
return false;
}
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if ((int)ch > 57 || (int)ch <48){
return false;
}
}
return true;
}
}
class Solution {
public boolean solution(String s) {
if(s.length() == 4 || s.length() == 6){
try{
int x = Integer.parseInt(s);
return true;
} catch(NumberFormatException e){
return false;
}
}
else return false;
}
}
'Algorithm(알고리즘) > 프로그래머스 고득점 Kit' 카테고리의 다른 글
Java 프로그래머스 - [2018 카카오] 비밀지도 Level1 (0) | 2021.01.06 |
---|---|
Java 프로그래머스 - [카카오 인턴] 키패드 누르기 Level1 (0) | 2021.01.04 |
Java 프로그래머스 Level1 연습문제 모음 #2 (11~20) (0) | 2020.12.30 |
Java 프로그래머스 Level1 연습문제 모음 #1 (1~10) (0) | 2020.12.28 |
프로그래머스 - 체육복 Level1 파이썬 (0) | 2020.12.21 |