22.5.03 [HackerRank]Java List

์„œํƒœ์šฑยท2022๋…„ 5์›” 5์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
26/45
post-thumbnail

โœ… ๋ฌธ์ œ ๋ถ„์„

์ฒซ์งธ ์ค„์— L์— ํฌํ•จ๋œ ์š”์†Œ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค.
๋‘˜์งธ ์ค„์€ ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„ L์˜ ์š”์†Œ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ž…๋ ฅ๋œ๋‹ค.
์…‹์งธ ์ค„์€ ์ฟผ๋ฆฌ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ Q๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.

์ฟผ๋ฆฌ๋Š” ๋ฌธ์ž์—ด Insert / Delete์— ๋”ฐ๋ผ ๋‚˜๋‰œ๋‹ค.
Insert: ๋ฌธ์ž์—ด ๋‹ค์Œ์— ์˜ค๋Š” ๋ผ์ธ์— 2๊ฐœ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜๋‰œ ์ •์ˆ˜ x,y๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
value y ๊ฐ’์€ L์˜ x๋ฒˆ์งธ ์ธ๋ฑ์Šค์— insert ๋œ๋‹ค.
Delete: ๋ฌธ์ž์—ด ๋‹ค์Œ์— ์˜ค๋Š” ์ธ๋ฑ์Šค x๋Š” L์—์„œ ์ง€์›Œ์ ธ์•ผ ํ•˜๋Š” ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๐ŸŒฑ ๋ฐฐ๊ฒฝ์ง€์‹

next() vs nextInt()

  1. next()
    ์ด ๋ฉ”์†Œ๋“œ๋Š” ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. ์ฆ‰, ๊ณต๋ฐฑ์ด์ „๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ๋ฐ›๊ฒŒ ๋œ๋‹ค.

  2. nextInt()
    ์ •์ˆ˜(intํ˜•)์„ ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ ์จ์ค€๋‹ค.

๋‘˜๋‹ค ์‚ฌ์šฉ์— ์ฃผ์˜ํ•  ์ ์€, ๋งŒ์•ฝ ์‚ฌ์šฉ ํ›„ ์—”ํ„ฐ๋ฅผ ์นœ ์ƒํ™ฉ์—์„œ
nextLine()๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Exception์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ.
๊ฐœํ–‰๋ฌธ์ž(\n)๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ ˆ์ฐจ๊ฐ€ ๊ผญ ํ•„์š”ํ•˜๋‹ค.

break; vs continue;

  1. break๋ฌธ
    ์ž์‹ ์ด ํฌํ•จ๋œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค.
public class Test{
	public static void main(String[] args) {
    	while(true){
        	System.out.println("1");
            if(true){
            	System.out.println("2");
                break;
            }
            System.out.println("3");
        }
        System.out.println("4");
    }
}

//๊ฒฐ๊ณผ
1 
2 
4

break๋ฌธ์€ while ๋ฐ˜๋ณต๋ฌธ ๋‚ด์˜ if ์กฐ๊ฑด๋ฌธ์— ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋–„๋ฌธ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์ธ while๋ฌธ ์ „์ฒด๋ฅผ ๋ฒ—์–ด๋‚˜ 3๋ฒˆ์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค.

  1. continue๋ฌธ
    ๋ฐ˜๋ณต๋ฌธ์˜ ๋์œผ๋กœ ์ด๋™ํ•ด ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๋ฐ˜๋ณต๋ฌธ ์ „์ฒด๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (1) for๋ฌธ์˜ ๊ฒฝ์šฐ, ์ฆ๊ฐ์‹์œผ๋กœ ์ด๋™
    (2) while๋ฌธ,do-while๋ฌธ์˜ ๊ฒฝ์šฐ ์กฐ๊ฑด์‹์œผ๋กœ ์ด๋™
public class Test{
	public static void main(String[] args){
    	for(int i=0, i<10, i++){
        	if(i%2==0){
            	continue;
            }
            System.out.println(i);
        }
    }
}

//๊ฒฐ๊ณผ
1
3
5
7
9

0๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ 2์˜ ๋ฐฐ์ˆ˜์ผ ๋–„๋งˆ๋‹ค continue;๊ตฌ๋ฌธ์„ ๋งŒ๋‚˜์„œ for(){}๊ตฌ๋ฌธ์˜ ๋์œผ๋กœ ์ด๋™ํ•˜์—ฌ 2์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค.
์ฆ‰, break;๋ฌธ๊ณผ ๋‹ค๋ฅด๊ฒŒ for(){}๊ตฌ๋ฌธ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ๊ตฌ๋ฌธ์˜ ๋์œผ๋กœ ์ด๋™ํ•ด ์กฐ๊ฑด์‹์ด false๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ž๋ฐ” Integer List๋ฅผ String์œผ๋กœ ๋ณ€ํ™˜

  1. ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        String str = list.toString();
        System.out.println( str ); // [1, 2, 3]
    }
}

์ถœ๋ ฅ
[1, 2, 3]

  1. ๊ณต๋ฐฑ ๊ตฌ๋ถ„์ž
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        String str = list.toString().replaceAll("[^0-9 ]","");
        System.out.println( str ); // 1 2 3
    }
}

์ถœ๋ ฅ
1 2 3

  1. ์ˆซ์ž๋งŒ ์ถœ๋ ฅ
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        String str = list.toString().replaceAll("[^0-9]","");
        System.out.println( str ); // 123
    }
}

์ถœ๋ ฅ
123

โœ๏ธ ํ•ด์„ค

import java.io.*;
import java.util.*;

public class JavaList {
    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            Scanner sc = new Scanner(System.in); 
            int n = sc.nextInt(); // ์—ฌ๊ธฐ์„œ ์ž…๋ ฅ๋ฐ›๋Š” ์ •์ˆ˜ n์€ list์— ๋“ค์–ด๊ฐˆ element ๊ฐฏ์ˆ˜๋‹ค.
            ArrayList<Integer> list = new ArrayList();
            for (int i=0; i<n; i++){ // list ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜์–ด์„œ 5 ์ดํ•˜๊นŒ์ง€(๋ฐฐ์—ด์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋‹ˆ๊นŒ!) ๋ฐ˜๋ณต๋ฌธ์ด ๋ˆ๋‹ค.
                list.add(sc.nextInt()); // int ๊ฐ’์„ ์ž…๋ ฅ ๋ฐ›์•„์„œ ์ฐจ๋ก€๋Œ€๋กœ list์— add
            }

            int q = sc.nextInt(); // int q๋Š” ์„ธ๋ฒˆ์งธ ์ค„์— ์ž…๋ ฅ๋˜๋Š” ์ฟผ๋ฆฌ์˜ ๊ฐฏ์ˆ˜๋‹ค.
            for (int i=0; i<q; i++){ //์—ญ์‹œ ์ž…๋ ฅ๋œ ์ฟผ๋ฆฌ๋“ค์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฆฐ๋‹ค.
                String query = sc.next();
                if (query.equals("Insert")){ //๋งŒ์•ฝ ์ฟผ๋ฆฌ๊ฐ€ Insert์ด๋ฉด 
                    int x = sc.nextInt(); // x,y๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์€ ๋’ค 
                    int y = sc.nextInt();
                    list.add(x, y); // x๋ฒˆ์งธ ์œ„์น˜์— y๊ฐ’์„ ๋„ฃ์œผ๋ผ๋Š” ๋œป์ด๋‹ค. 
                    continue; // ๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ break๋ฅผ ํ•˜๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด for ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค. continue๋Š” for(){}๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์กฐ๊ฑด์ด ๋‹คํ• ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ง„ํ–‰๋œ๋‹ค.
                }
                if (query.equals("Delete")){ //์ฟผ๋ฆฌ๊ฐ€ Delete์ด๋ฉด
                    int x = sc.nextInt(); // ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ x๋ผ ํ•˜๊ณ 
                    list.remove(x); // ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ index์œ„์น˜์— ์žˆ๋Š” ๊ฐ’์„ ์ง€์šด๋‹ค. 
                    continue; //๋‹ค์‹œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ, i<q(=2) ์กฐ๊ฑด์„ ์ถฉ์กฑ ๋ชปํ•˜๋ฏ€๋กœ ์กฐ๊ฑด๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค.
                }
            }
            sc.close(); ์Šค์บ๋„ˆ๋ฅผ ๋‹ซ์•„์ฃผ๊ณ 
            System.out.println(list.toString().replaceAll("[^0-9 ]","")); //toString()์€ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ์ •๋ณด, ๊ฐ’๋“ค์„ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฆฌํ„ดํ•ด์ค€๋‹ค. 
            //replaceAll์„ ์‚ฌ์šฉํ•ด ์ •๊ทœํ‘œํ˜„์‹์„ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค..()์•ˆ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ณ€ํ™˜ํ•˜๋ ค๋Š” ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฌธ์ž์—ด, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ๋ณ€ํ™˜ํ•  ๋ฌธ์ž ๊ฐ’์ด๋‹ค.
			// ๋ฌธ์ œ์—์„œ ํ•œ์ค„์— ๊ณต๋ฐฑ์„ ํ•˜๋‚˜์”ฉ ํฌํ•จํ•ด์„œ ํ”„๋ฆฐํŠธํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ๊ณต๋ฐฑ ๊ตฌ๋ถ„์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์น˜ํ™˜ํ•ด์ค€๋‹ค. 
            //์ˆซ์ž๋งŒ ๋‚จ๊ธฐ๊ณ  ๋ฌธ์ž์—ด์€ ""๋กœ ์น˜ํ™˜ํ•ด ์ง€์šด๋‹ค..([] ์•ˆ์˜ ^ ์บ๋Ÿฟ์€ ๋ฐ”๊นฅ์— ์กด์žฌํ• ๋•Œ ์‹œ์ž‘์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜๋Œ€๋ฅผ ์˜๋ฏธ. ์ˆซ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด, ์ฆ‰ a-zA-Z)
            //์ด๋•Œ ๋’ค์— ๊ณต๋ฐฑ์ด ์—†์œผ๋ฉด ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ์•ˆ๋จ. ์ˆซ์ž๋“ค ์‚ฌ์ด๋ฅผ ๋„์šฐ๋ ค๋ฉด ๊ณต๋ฐฑ ์ถ”๊ฐ€ํ•ด์•ผ ๋จ
        }
    }

๐Ÿ‘‰ ์ฐธ๊ณ 

0๊ฐœ์˜ ๋Œ“๊ธ€