๐Ÿ“ algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | ์ˆ˜ ์กฐ์ž‘ํ•˜๊ธฐ1 JAVA(์ž๋ฐ”)

c0zi 2023. 9. 17. 10:23

๐Ÿง ๋ฌธ์ œ

: ์ˆ˜ ์กฐ์ž‘ํ•˜๊ธฐ1

 

 

๐Ÿงพ ๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ n๊ณผ ๋ฌธ์ž์—ด control์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. control์€ "w", "a", "s", "d"์˜ 4๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, control์˜ ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž์— ๋”ฐ๋ผ n์˜ ๊ฐ’์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • "w" : n์ด 1 ์ปค์ง‘๋‹ˆ๋‹ค.
  • "s" : n์ด 1 ์ž‘์•„์ง‘๋‹ˆ๋‹ค.
  • "d" : n์ด 10 ์ปค์ง‘๋‹ˆ๋‹ค.
  • "a" : n์ด 10 ์ž‘์•„์ง‘๋‹ˆ๋‹ค.


์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ n์„ ๋ฐ”๊ฟจ์„ ๋•Œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ค๋Š” n์˜ ๊ฐ’์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

 

๐Ÿค™๐Ÿป ์ œํ•œ ์‚ฌํ•ญ

  • -100,000 ≤ n ≤ 100,000
  • 1 ≤ control์˜ ๊ธธ์ด ≤ 100,000
    • control์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž "w", "a", "s", "d"๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค

 

 

๐Ÿšฉ ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

- n : 0, control : "wsdawsdassw", result : -1

  • ์ˆ˜ n์€ control์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
  • ๋”ฐ๋ผ์„œ -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

 


โœ“ ๋ฌธ์ œ ํ’€์ด

 

๐Ÿšง ์‹œํ–‰์ฐฉ์˜ค

 

์ฒ˜์Œ์—๋Š” String[] arr = str.split(” ”); ์œผ๋กœ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  for๋ฌธ๋„ String str์œผ๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ–ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ๋‹ค... ์ž๋ฐ” ๋ฌธ๋ฒ• ๋„ˆ๋ฌด ๋ชจ๋ฅด๋Š” ๊ฒƒ ๊ฐ™์•„ ํ˜„ํƒ€๊ฐ€ ์˜ค๋ฉด์„œ๋„ ์™œ ์•ˆ๋˜๋Š” ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ chat gptํ•œํ…Œ ๋ฌผ์–ด๋ดค๋Š”๋ฐ ์–˜๋„ ๋ชจ๋ฆ„ .... ๋ฉ์ฒญ์ด gpt ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ char[] ๋ฐฐ์—ด๋กœ ๋Š์–ด์„œ ํ•ด๊ฒฐ ํ–ˆ๋‹ค.

 

๐Ÿ“ ํ•ด๊ฒฐ

 

1. ๋ฌธ์ž์—ด์„ toCharArray ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

2. for-each๋ฌธ์„ ํ†ตํ•ด ๋ฌธ์ž ๋ฐฐ์—ด์˜ ๋ฌธ์ž๋“ค์„ ํ•˜๋‚˜์”ฉ ๋ฐ›์•„ ๊ฐ ๋„ค๊ฐ€์ง€ ๊ฒฝ์šฐ์™€ ๋น„๊ตํ•˜๊ณ  n์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค.

 

class Solution {
    public int solution(int n, String control) {
        
        char[] arr = control.toCharArray();
        
        for(char str : arr) {
            if (str == 'w') {
                n += 1;
            } else if (str == 's') {
                n -= 1;
            } else if (str == 'd') {
                n += 10;
            } else if (str == 'a') {
                n -= 10;
            }
        }
        
        return n;
    }
}

 

๐Ÿ“ ๋ฌธ์ž์—ด ๋ฐฐ์—ด ๋ฐฉ์‹

 

์˜ค๋Š˜ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ ์•„๋ฌด๋ž˜๋„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ํ’€์–ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๋‹ค์‹œ ํ’€์–ด๋ดค๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋˜ ์ด์œ ๋Š” split(" ")์œผ๋กœ ์ ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ์ž๋ฐ” ๋ฌธ๋ฒ•์ด ๊ณ„์† ํ—ท๊ฐˆ๋ ค์„œ ๋ธ”๋กœ๊ทธ ์ฐพ์•„๋ณด๋ฉด์„œ ํ’€์—ˆ์—ˆ๋Š”๋ฐ, ๊ทธ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” split(" ")์ด๋ผ ์ ์–ด์„œ ๊ทธ๊ฒŒ ๋งž๋Š” ์ค„ ์•Œ๊ณ , 

 

String[] arr = control.split(" ");

 

์ด๋ ‡๊ฒŒ ์ ์—ˆ์—ˆ๋Š”๋ฐ ์˜ค๋Š˜ ์ €๋ฒˆ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ '์™œ ๊ณต๋ฐฑ์„ ์“ฐ๋Š”๊ฑฐ์ง€ ?'๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๋‹ค์‹œ ์ธํ„ฐ๋„ท ์ฐพ์•„๋ณด๋‹ˆ ๋ฌธ์ž์—ด ํ•˜๋‚˜์”ฉ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๊ทธ๋ƒฅ ๊ณต๋ฐฑ ์—†์ด split("")์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ๋งž๋Š” ๊ฑฐ์˜€๋‹ค...

 

๊ทธ๋ ‡๊ฒŒ ํ•ด๊ฒฐํ•œ ํ’€์ด 

 

1. ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด for๋ฌธ์„ ๋Œ๋ ธ๋‹ค.

2. ๋ฌธ์ž์—ด ๋น„๊ต์ด๊ธฐ ๋•Œ๋ฌธ์— .equals ์‚ฌ์šฉ !

 

class Solution {
    public int solution(int n, String control) {
        
        String[] arr = control.split("");
        
        for(String str : arr) {
            if (str.equals("w")) {
                n += 1;
            } else if (str.equals("s")) {
                n -= 1;
            } else if (str.equals("d")) {
                n += 10;
            } else if (str.equals("a")) {
                n -= 10;
            }
        }
        
        return n;
    }
}

 

โœ“ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

 

switch๋ฌธ์œผ๋กœ ํŽธํ•˜๊ฒŒ ๋งŒ๋“œ์‹  ๋ถ„์ด ๊ณ„์‹ ๋‹ค... ๊ตณ

 

class Solution {
    public int solution(int n, String control) {
        int answer = n;

        for(char ch : control.toCharArray()) {
            switch(ch) {
                case 'w': answer += 1; break;
                case 's': answer -= 1; break;
                case 'd': answer += 10; break;
                case 'a': answer -= 10; break;
                default:break;
            }
        }

        return answer;
    }
}