13. 2016년

2016년의 날짜를 입력하면 요일을 출력하기

 

public class year_2016 {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        String answer = "";
        String[] day = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
        int[] date = {31,29,31,30,31,30,31,31,30,31,30,31};
        int select = 0;

        for(int i = 0; i < a-1; i++){
            select += date[i];
        }
        select += b - 1;

        answer = day[select % 7];
        
        System.out.println(answer);
    }
}

위에는 클래스를 따로 Import 하지 않고 풀었을 때의 풀이입니다.

2016년 개별 월의 마지막 날짜를 구해서 해당 날짜만큼을 8일

import java.time.LocalDate;
import java.util.Scanner;

public class year_2016 {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        Scanner scanner = new Scanner(System.in);
        a = scanner.nextInt();
        b = scanner.nextInt();
        String answer = "";
        LocalDate date = LocalDate.of(2016, a,b);
        System.out.println(date); // 2016-5-24
        answer = date.getDayOfWeek().toString(); //요일은 String 타입으로 변환해야한다.
        System.out.println(answer); // TUESDAY
        System.out.println(answer.substring(0,3)); //.substring 메서드 사용해서 앞 3글자만 출력
    }
}

 

LocalDate.of() 메서드를 사용하면 쉽게 날짜를 구할 수 있습니다.

사용하기 위해서

 

import java.time.LocalDate;

 

LocalDate.of(year, month, day)

 

.getDayOfWeek() 메서드를 사용하면 요일을 구할 수 있습니다.

 

단, String 타입으로 변환을 해줘야 합니다.

 

.toString() 을 사용하거나 

String.valueOf() 를 사용해서 타입 변환을 해줍니다.

 

 

 

14. 나중에 떨어지는 숫자 배열

1. 배열의 길이를 구해서 조건값 찾기

2. 각 인덱스를 divisor 나눈 나머지 값 구하기 %divisor

3. 한번 길이를 정한 배열은 변경할 수 없기 때문에... 나머지가 0인 index의 수를 세기 count++

4. count 길이만큼의 배열 만들기 answer []

5. 나머지가 0이면 해당 Index값을 반환한 값을 answer [] 에 넣기

6. if else %divisor !=0 인 경우 count []에 -1 을 담기

7. 오름차순으로 배열하기 Arrays.sort 사용하기

 

import java.util.Arrays;

public class numberArray {
    class Solution {
        public int[] solution(int[] arr, int divisor) {
            int count =0;

            for(int i =0; i<arr.length; i++){
                if(arr[i]%divisor==0){
                   count++;
                }
            }
            int[] answer = new int[count];
            count=0;                        //count 값 초기화 (변수명 바꿔도 상관x)
            for (int i=0; i<arr.length; i++){
                if(arr[i]%divisor==0){
                    answer[count] = arr[i]; //answer index [0]번째부터 값 넣어주기
                    count++;
                }
            }
            if(answer.length==0){
                answer = new int[1];
                answer[0] =-1;
            }

            Arrays.sort(answer);
            return answer;
        }

    }
}

 

 

 

15. 내적

1. for 문 이용해서 풀면 간단하다.

public class naejuk {
    public static void main(String[] args) {
        int answer = 0;
        int[] a ={1,2,3,4};
        int[] b ={-3,-1,0,2};
        for(int i=0; i<a.length; i++){
                answer +=(a[i]*b[i]); //()괄호를 해줘야 answer에 곱한 값이 들어간다.
            }
        System.out.println(answer);
        }

    }

 

16. 문자 내 p와 y의 개수

1. 문자열을 배열로 전환한다. char[] toCharArray(): 문자열을 문자배열로 변환해서 반환을 사용해본다.

2. p 또는 P의 개수(int p)와 y또는 Y의 개수(int y)를 센다.

3. 두 값이 같으면 true를 리턴한다. 아니면 false를 리턴한다.

import java.util.Arrays;
import java.util.Scanner;

public class py {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int p =0;
        int y =0;
        char[] arr = s.toCharArray();
        System.out.println(Arrays.toString(arr));
        for(int i=0; i<arr.length; i++){
            if(arr[i]=='p'|| arr[i]=='P'){
                p++;
            }
        }
        System.out.println(p);
        for(int i=0; i<arr.length; i++){
            if(arr[i]=='y'|| arr[i]=='Y'){
                y++;
            }
        }
        System.out.println(y);
        boolean answer = true;
        if(p==y){
            answer = true;
        }else{
            answer = false;
        }
        System.out.println(answer);
    }
}

 

소문자와 대문자를 || 로 넣었는데 그냥 처음부터 

 

.toUpperCase()를 써서 굳이 || 를 안쓰게 할 수도 있었습니다.

 

.filter() 메서드라는 게 있네요. 아래는 좋아요를 가장 많은 풀이 입니다.

class Solution {
    boolean solution(String s) {
        s = s.toUpperCase();

        return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
    }
}

 

 

17. 문자열 다루기 기본

1. 길이 확인하기: s.length !=4 && s.length !=6 이면 false return

3. 문자인지 아닌지 확인하기 .charAt()과 for 문 사용하기   

 

import java.util.Scanner;

public class stringControl {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        boolean answer = true;
        if(s.length() !=4 && s.length() !=6){
            answer = false; //길이가 4와 6이 아니면 false
        }
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i)<'0'|| s.charAt(i)>'9'){ //0보다 작거나 9보다 크면 false; char 이기 때문에 문자로 비교
                answer = false;
            }
        }
        System.out.println(answer);
    }
}

 

생각보다 쉽게 풀어졌는데 프로그래머스에 제출 코드는 조금 변형했습니다.

s.length를 에러로 인식해서 새로 변수를 선언했습니다.

그리고 && 대신 || 를 사용해봤습니다.

 

class Solution {
    public boolean solution(String s) {
        boolean answer = false;
        int length = s.length();
        if(length==4 || length==6){
            answer = true;
        }
        for(int i=0; i<length; i++){
            if(s.charAt(i)<'0'|| s.charAt(i)>'9'){
                answer=false;
            }
        }
        return answer;
    }
}

 

가장 좋아요를 많이 받은 풀이는 try, catch 문을 사용했습니다. 아직 안배운 부분이라 생각치 못했네요.

 

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;
  }
}

 

 

18. 서울에서 김서방 찾기

1. kim 값을 찾는다. if문 사용 seoul[i].equals("kim"), System.out.println(i);

2. 해당 Index가 몇번째인지 알아내기 

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        int length = seoul.length;
        for(int i =0;i<length; i++){
            if(seoul[i].equals("Kim")){
                answer = "김서방은 "+i+"에 있다";
            }
        }
    
        return answer;
    }
}

- 대문자 소문자 확인하기

- String 비교 할 때는 .equals() 메소드 사용하기

 

Arrays.asList().indexOf();

가장 좋아요를 많이 받은 풀이 입니다.

Arrays.asList() : Array를 List처럼 사용할 수 있게 해주는 클래스 

.indexOf() 메소드를 사용했습니다.

+ Recent posts