๊ธฐ๋ก๋ฐฉ

Lv.2 : ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’

Soom_1n 2023. 11. 22. 09:49

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 5x5 ์ขŒํ‘œํ‰๋ฉด์—์„œ ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์ž„์˜ ๋ช…๋ น์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ์ขŒํ‘œ๊ฐ€ 5x5์•ˆ์—์„œ ์›€์ง์—ฌ์•ผ ํ•˜๋Š”๊ฒƒ์— ์œ ์˜ํ•œ๋‹ค.
  • ๋ฐฉ๋ฌธ ํ–ˆ๋˜ ์ขŒํ‘œ๊ฐ€ ์•„๋‹Œ, ์ง€๋‚˜์˜จ ๊ธธ์˜ ์ˆ˜๋ฅผ ์„ธ์•ผํ•œ๋‹ค.
  • ๊ธธ์˜ ์ˆ˜๋ฅผ ์…€๋•Œ ๋ฐฉํ–ฅ์€ ์ƒ๊ด€์—†์Œ์— ์œ ์˜ํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.Set;
import java.util.HashSet;

class Solution {
    public int solution(String dirs) {
        char[] orders = dirs.toCharArray();
        Set<String> set = new HashSet<>();

        int x = 0;
        int y = 0;

        for (char order : orders) {

            int nx = x;
            int ny = y;

            switch (order) {
                case 'U' :
                    nx--;
                    break;
                case 'D':
                    nx++;
                    break;
                case 'L':
                    ny--;
                    break;
                case 'R':
                    ny++;
                    break;
            }

            if (Math.abs(nx) <= 5 && Math.abs(ny) <= 5) {
                set.add(String.format("(%d,%d),(%d,%d)",x,y,nx,ny));
                set.add(String.format("(%d,%d),(%d,%d)",nx,ny,x,y));
                x = nx;
                y = ny;
            }
        }

        return set.size()/2;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ํ˜„์žฌ ์ขŒํ‘œ์—์„œ ๋ช…๋ น์— ๋”ฐ๋ผ ๋‹ค์Œ ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ด๋™ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋™ํ•œ๋‹ค.
  • ์ง€๋‚˜์˜จ ๊ธธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ธฐ์œ„ํ•ด Set์— ์ขŒํ‘œ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ์ด๋•Œ, ๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ๋„ ๊ฐ™์ด ๊ธฐ๋กํ•œ๋‹ค.
  • ์ €์žฅ๋œ ๊ธธ์˜ ๊ฐœ์ˆ˜ / 2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„๋ฌธ์ œ์˜€๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•˜์ง€๋ชปํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ • ํ›„ ํ’€์ดํ–ˆ๋‹ค.
  • ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ, ๋‚ด ํ’€์ด์ฒ˜๋Ÿผ ๋ฌธ์ž์—ด ์ €์žฅํ•˜๋Š” ๊ฒƒ๋„ ์žˆ์—ˆ์ง€๋งŒ Hash๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅํ•˜๋Š”๊ฒŒ ์ธ์ƒ ๊นŠ์—ˆ๋‹ค.
    • ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์€ ์–ด๋–ป๊ฒŒ ์ €์žฅํ–ˆ๋‚˜ ๋ณด๋‹ˆ, Point ํด๋ž˜์Šค๋กœ ์ขŒํ‘œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, hashCode() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ด์„œ Objects.hash(y+x) ๋ฐฉ์‹์œผ๋กœ ์ขŒํ‘œ๋ฅผ ๋”ํ•ด ํ•ด์‹œ๊ฐ’์„ ๋งŒ๋“ค๊ณ , ๋‘ Point ํด๋ž˜์Šค์˜ ํ•ด์‹œ ๊ฐ’์˜ ๊ณฑ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
      Objects.hash(start.hashCode() * end.hashCode())โ€‹
  • ๋˜ ์ธ์ƒ ๊นŠ์—ˆ๋˜๊ฑด, UDLR์˜ ๋ช…๋ น์„ enum์œผ๋กœ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ๊ธธ ๋ฐ ์ด๋™์„ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•ด์„œ ์ŠคํŠธ๋ฆผ ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•ด ํ’€์ดํ•œ ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ๋‹ค. java์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์•„์ฃผ ์ž˜ ์‚ฌ์šฉํ•œ ํ’€์ด ๊ฐ™์•„์„œ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Lv.2 : ๋•…๋”ฐ๋จน๊ธฐ  (0) 2023.11.23
Lv.2 : ์ฃผ์‹๊ฐ€๊ฒฉ  (0) 2023.11.23
Lv.2 : ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ  (0) 2023.11.21
Lv.2 : n์ง„์ˆ˜ ๊ฒŒ์ž„  (0) 2023.11.11
Lv.2 : ์••์ถ•  (0) 2023.11.09