ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Summer/Winter Coding(~2018)] ๋ฐฉ๋ฌธ๊ธธ์ด - Level2, Java
    ๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜ 2022. 11. 27. 18:36
    728x90

    ๐Ÿ“๋ฌธ์ œ ์„ค๋ช… 

    ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๋ฅผ 4๊ฐ€์ง€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›€์ง์ด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • U: ์œ„์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
    • D: ์•„๋ž˜์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
    • R: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ
    • L: ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ๊ฐ€๊ธฐ

    ์บ๋ฆญํ„ฐ๋Š” ์ขŒํ‘œํ‰๋ฉด์˜ (0, 0) ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ขŒํ‘œํ‰๋ฉด์˜ ๊ฒฝ๊ณ„๋Š” ์™ผ์ชฝ ์œ„(-5, 5), ์™ผ์ชฝ ์•„๋ž˜(-5, -5), ์˜ค๋ฅธ์ชฝ ์œ„(5, 5), ์˜ค๋ฅธ์ชฝ ์•„๋ž˜(5, -5)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, "ULURRDLLU"๋กœ ๋ช…๋ นํ–ˆ๋‹ค๋ฉด

    • 1๋ฒˆ ๋ช…๋ น์–ด๋ถ€ํ„ฐ 7๋ฒˆ ๋ช…๋ น์–ด๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›€์ง์ž…๋‹ˆ๋‹ค.
    • 8๋ฒˆ ๋ช…๋ น์–ด๋ถ€ํ„ฐ 9๋ฒˆ ๋ช…๋ น์–ด๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›€์ง์ž…๋‹ˆ๋‹ค.

    ์ด๋•Œ, ์šฐ๋ฆฌ๋Š” ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์ง€๋‚˜๊ฐ„ ๊ธธ ์ค‘ ์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์›€์ง์ธ ๊ธธ์ด๋Š” 9์ด์ง€๋งŒ, ์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋Š” 7์ด ๋ฉ๋‹ˆ๋‹ค. (8, 9๋ฒˆ ๋ช…๋ น์–ด์—์„œ ์›€์ง์ธ ๊ธธ์€ 2, 3๋ฒˆ ๋ช…๋ น์–ด์—์„œ ์ด๋ฏธ ๊ฑฐ์ณ ๊ฐ„ ๊ธธ์ž…๋‹ˆ๋‹ค)

    ๋‹จ, ์ขŒํ‘œํ‰๋ฉด์˜ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ๋ช…๋ น์–ด๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, "LULLLLLLU"๋กœ ๋ช…๋ นํ–ˆ๋‹ค๋ฉด

    • 1๋ฒˆ ๋ช…๋ น์–ด๋ถ€ํ„ฐ 6๋ฒˆ ๋ช…๋ น์–ด๋Œ€๋กœ ์›€์ง์ธ ํ›„, 7, 8๋ฒˆ ๋ช…๋ น์–ด๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ 9๋ฒˆ ๋ช…๋ น์–ด๋Œ€๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค.

    ์ด๋•Œ ์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋Š” 7์ด ๋ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜ dirs๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ๊ฐ€ ์ฒ˜์Œ ๊ฑธ์–ด๋ณธ ๊ธธ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜์—ฌ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

    ์ œํ•œ์‚ฌํ•ญ
    • dirs๋Š” stringํ˜•์œผ๋กœ ์ฃผ์–ด์ง€๋ฉฐ, 'U', 'D', 'R', 'L' ์ด์™ธ์— ๋ฌธ์ž๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • dirs์˜ ๊ธธ์ด๋Š” 500 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
    ์ž…์ถœ๋ ฅ ์˜ˆ
    dirs answer
    "ULURRDLLU" 7
    "LULLLLLLU" 7

    ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

    ์ž…์ถœ๋ ฅ ์˜ˆ #1

    ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

     

    ์ž…์ถœ๋ ฅ ์˜ˆ #2
    ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    #ffecd2 #ef5a5a

     

     

     ๐Ÿ”Ž ์ฒ˜์Œ ์ƒ๊ฐํ•œ ์•„์ด๋””์–ด  

    x,y ์ขŒํ‘œ๋ฅผ ์„ ์–ธํ•ด์„œ -5 < x,y< 5 ์ผ๋•Œ๊นŒ์ง€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค.

    ์›€์ง์ด๊ธฐ ์ „ ์ขŒํ‘œ์™€ ์›€์ง์ธ ํ›„์˜ ์ขŒํ‘œ๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•ด์ค€๋‹ค์Œ HashSet์— ๋„ฃ์–ด์•ผ๊ฒ ๋‹ค!

    ์›€์ง์ด๊ธฐ ์ „ ์ขŒํ‘œ (x0, y0)

    ์›€์ง์ธ ํ›„ ์ขŒํ‘œ (x1,y1) ์ด๋ผ ํ•œ๋‹ค๋ฉด

    String s1 = x0y0x1y1 

    String s2 = x2y1x0y0

    ๋กœ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด์„œ HashSet์— ์ €์žฅํ•˜๋ฉด ์ค‘๋ณต์€ ์‚ฌ๋ผ์ง€๊ณ  ๋‹ต์€ HashSet์˜ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์ด ๋œ๋‹ค.

    ๊ทธ๋ ‡๊ฒŒํ•ด์„œ ํ’€์—ˆ๋”๋‹ˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์ •ํ™•๋„๊ฐ€ 40์ ์ด์˜€๋‹ค.

     

    ๋ญ์ง€.. x,y๊ฐ€ ์ขŒํ‘œ๋ฅผ ๋ฒ—์–ด๋‚˜๋‚˜? ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๋„ ์•„๋‹ˆ์˜€๋‹ค.

    ๋ฐ˜๋ก€๊ฐ€ ๋ญ๊ฐ€ ์žˆ์ง€ ? ๋ผ๊ณ  ๊ณ ๋ฏผํ–ˆ๋‹ค.

     

    ๋ฐ˜๋ก€๋Š”

    ์›€์ง์ด๊ธฐ ์ „ ์ขŒํ‘œ์™€ ์›€์ง์ธ ํ›„์˜ ์ขŒํ‘œ๊ฐ€ ๊ฐ™์„ ๋•Œ (์ฆ‰, ์›€์ง์ด์ง€ ์•Š์•˜์„ ๋•Œ) ๊ฐ€

    hashSet์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค..!!

     

     

     

     โœ๏ธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ 

    import java.util.*;
    
    class Solution {
        public int solution(String dirs) {
            
    		HashSet<String> hs = new HashSet<>();
            //List<String> arrlist= new ArrayList<>();
    		int x = 0, y = 0;
    
    		for (int i = 0; i < dirs.length(); i++) {
    			char c = dirs.charAt(i);
                
                
               
    			String prev_x = Integer.toString(x);
                String prev_y = Integer.toString(y);
    
    			if (c == 'U' && y < 5) {
    				y++;
    			} else if (c == 'D' && y > -5) {
    				y--;
    			} else if (c == 'L' && x > -5) {
    				x--;
    			} else if (c == 'R' && x < 5) {
    				x++;
    			}
    
               
    			String str1 = prev_x+ prev_y + Integer.toString(x) + Integer.toString(y) ;
    			String str2 = Integer.toString(x) + Integer.toString(y) + prev_x + prev_y;
    
                
    			if(!str1.equals(str2)) {
    				
    				hs.add(str1);
    				hs.add(str2);
    			}
    		}
    
    		return  hs.size()/2;
        }
    }

     

     

     

    ๋‚˜๋Š” ๋ฐ”๋ณด..ใ…‚ใ„ทใ…‚ใ„ท

     

     

     

     

    ๋Œ“๊ธ€

Designed by Tistory.