정구리의 우주정복

[Java 예제 1000제] Word Scramble 1- 단어 맞추기 본문

JAVA/STUDY

[Java 예제 1000제] Word Scramble 1- 단어 맞추기

Jungry_ 2022. 2. 1. 15:38
반응형

https://cafe.naver.com/javachobostudy

 

남궁성의 코드초보스터디(자바 java... : 네이버 카페

전문가가 지도하는 스터디카페에요. 프로그래밍언어(자바 java, C언어)를 제대로 배우고픈 분들 오세요.

cafe.naver.com

 

 

문제


[문제1] 다음의 예제를 완성하시오.

getAnswer(String[] strArr)는 배열strArr의 요소중의 하나를 임의로 골라서 반환한다.(Math.random()사용)

getScrambledWord(String str)는 주어진 문자열 str의 각 문자의 순서를 뒤섞은 다음, 새로운 문자열로 반환한다.

                                             (Math.random()사용)

 

class WordScrambleEx1 {
      public static void main(String[] args) {
            String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};

            String answer = getAnswer(strArr);
            String question = getScrambledWord(answer);

            System.out.println("Question:"+question);
            System.out.println("Answer:"+answer);
      } // main

      public static String getAnswer(String[] strArr) { 
           // 내용을 완성하세요.

      }
     
      public static String getScrambledWord(String str) { 
            // 내용을 완성하세요.

      } // scramble(String str)
}

 

[실행결과]

Question:HEPO
Answer:HOPE

 

나의 풀이


class WordScrambleEx1 {
    public static void main(String[] args) {
        String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};

        String answer = getAnswer(strArr);
        String question = getScrambledWord(answer);

        System.out.println("Question:"+question);
        System.out.println("Answer:"+answer);
    } // main

    public static String getAnswer(String[] strArr) {
        int num = (int)(Math.random()*4);
        return strArr[num];

    }

    public static String getScrambledWord(String str) {
        char[] arr = new char[str.length()];

        for(int i=0; i<str.length();i++){
            arr[i] = str.charAt(i);
        }
        /*
        char[] arr = str.toCharArray();
         */
        int randNum1,randNum2;
        char a,b;
        for(int i=0; i<arr.length;i++){
            randNum1 = (int)(Math.random()*arr.length);
            a = arr[randNum1];
            randNum2 = (int)(Math.random()*arr.length);
            b = arr[randNum2];
            arr[randNum1] = b;
            arr[randNum2] = a;
        }
        return new String(arr);

getAnswer 은 Math.random 에 4를 곱해 (strArr의 길이가 4이기 때문) strArr 중 랜덤으로 골라지게 만들었다

getScrambleWord 는 우선 단어를 배열로 바꿔주고 (toCharArray() 를 사용하면 쉽게 바꿀 수 있다고 한다

랜덤하게 두자리씩 바꾸고 바꾸고 해줬다 

 

Math.random 범위 정하는 방법

(int)Math.random()*(최대값-최소값+1)+최소값

정답인듯 ??

 

정답


      public static String getAnswer(String[] strArr) {
            int idx = (int)(Math.random()*strArr.length);
            return strArr[idx];
      }
     
      public static String getScrambledWord(String str) {
            char[] chArr = str.toCharArray();

            for(int i=0;i<str.length();i++) {
                   int idx = (int)(Math.random()*str.length());
                 
                  char tmp = chArr[i];
                  chArr[i] = chArr[idx];
                  chArr[idx] = tmp;
            }

            return new String(chArr);

 

반응형
Comments