๊ธฐ๋ก๋ฐฉ

Lv.2 : ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ

Soom_1n 2023. 11. 23. 16:51

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

 

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

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

programmers.co.kr



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

  • ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ ์ž…์žฅ, ํ‡ด์žฅ, ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์˜ ๊ธฐ๋ก์ด ์ฃผ์–ด์ง„๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์œ ์ € ์•„์ด๋””๋กœ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ, ์ž…์žฅ ๋•Œ์˜ ๋‹‰๋„ค์ž„์ด๋‚˜ ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ์‹œ ๋‹‰๋„ค์ž„์ด ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ„ ๊ธฐ๋ก์„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ตœ์ข… ๋ณ€๊ฒฝ ๋œ ๋‹‰๋„ค์ž„์œผ๋กœ ๋‚˜ํƒ€๋‚ด์•ผํ•œ๋‹ค.

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

  • ์‚ฌ์šฉ์ž ์•„์ด๋””์— ๋”ฐ๋ฅธ ๋‹‰๋„ค์ž„์„ ๋งต์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ , ์ตœ์ข… ๋ฐ˜ํ™˜ ์ „ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

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

import java.util.Map;
import java.util.HashMap;
import java.util.Queue;
import java.util.ArrayDeque;

class Solution {
    public String[] solution(String[] records) {

        Map<String, String> nick = new HashMap<>();
        Queue<String> history = new ArrayDeque<>();

        for (String record: records) {
            String[] recordStr = record.split(" ");

            switch (recordStr[0].charAt(0)) {
                case 'L':
                    history.add(recordStr[1]);
                    history.add("๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.");
                    break;
                case 'E':
                    history.add(recordStr[1]);
                    history.add("๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.");
                default:
                    nick.put(recordStr[1], recordStr[2]);
            }
        }

        String[] answer = new String[history.size()/2];

        for (int i = 0; i < answer.length; i++) {
            answer[i] = nick.get(history.poll()) + history.poll();
        }

        return answer;
    }
}

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

  • ์‚ฌ์šฉ์ž ์•„์ด๋””์— ๋”ฐ๋ฅธ ๋‹‰๋„ค์ž„ ์€ ํ•ด์‹œ๋งต nick์— ์ €์žฅํ•œ๋‹ค.
  • ์ด์šฉ ๊ธฐ๋ก์— ๋”ฐ๋ผ์„œ ์ž…์žฅ/ํ‡ด์žฅ/๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ์ž…์žฅ/ํ‡ด์žฅ ์‹œ, ์•„์ด๋””์™€ ๋ฉ”์„ธ์ง€๋ฅผ history์— ๊ธฐ๋กํ•œ๋‹ค.
    • ์ž…์žฅ/๋ณ€๊ฒฝ ์‹œ, ๋งต nick์— ์ €์žฅ ๋œ ํ•ด๋‹น ์•„์ด๋””์˜ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ๋‹ค. 
  • history๋Š” ํ•œ ๋ช…๋ น์— ๋Œ€ํ•ด์„œ ์‚ฌ์šฉ์ž ์•„์ด๋”” + ๋ฉ”์„ธ์ง€ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆ  ์ €์žฅ๋˜์—ˆ์œผ๋ฏ€๋กœ, ์ •๋‹ต์€ ๊ทธ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜๋งŒํผ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
    • ์ •๋‹ต ๋ฐฐ์—ด answer์— ์•„์ด๋””์— ๋”ฐ๋ฅธ ๋‹‰๋„ค์ž„๊ณผ ๋ฉ”์„ธ์ง€๋ฅผ ํ•ฉ์ณ ์ €์žฅ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์•„์ด๋””๋ฅผ ๋งต์œผ๋กœ ์ ์šฉํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.
    • ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค, ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค ํ•˜๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์ €์žฅ ๋˜๋Š”๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜์ง€ ์•Š์„๊นŒ ํ–ˆ์ง€๋งŒ, ๋ฌธ์ž์—ด์ด๋ผ์„œ ์–ด์ฐจํ”ผ ์ฃผ์†Œ๋กœ ์ €์žฅ๋˜์—ˆ์„ํ…Œ๋‹ˆ ํฌ๊ฒŒ ๋ฌธ์ œ๋˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋‹ค.
    • ์ข€๋” ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ณ ์ž ์•„์ด๋”” ๋ฐฐ์—ด, ๋ฉ”์„ธ์ง€ ๋ฐฐ์—ด ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ํ์— ๋„ฃ์–ด๋ณด์•˜๋Š”๋ฐ ์„ฑ๋Šฅ ๋น„๊ต๋Š” ํ•ด๋ณด์ง€ ์•Š์•„์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๋ฐฐ์—ด์„ ์ธ๋ฑ์Šค๋กœ ์ฐธ์กฐํ•ด์„œ ์ง€์†์ ์œผ๋กœ ์„ ํ˜• ํƒ์ƒ‰์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ์•ž ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด ๋” ๋นจ๋ž์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ๊ฐ์ฒด์ง€ํ–ฅ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฑธ ๋ดค๋Š”๋ฐ, ํ™•์‹คํžˆ ํ™•์žฅ์„ฑ์ด ์ถฉ๋ถ„ํžˆ ์ข‹์•„๋ณด์˜€์ง€๋งŒ ๋งต๋งŒ ์“ฐ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์—์„œ ์ข€ ๊ณผํ•œ ํ’€์ด ๊ฐ™์•˜๋‹ค. ๊ทธ๋ƒฅ ์ฝ”ํ…Œ์šฉ ํ’€์ด์™€ ๊ฐ์ฒด์ง€ํ–ฅ ์ ์šฉ ๋Šฅ๋ ฅ์„ ๋ณด๋Š” ๊ณผ์ œ ํ’€์ด๋Š” ์ด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • 2019 KAKAO RECRUITMENT์˜ 1๋ฒˆ ๋ฌธ์ œ์ด๊ณ  ์ •๋‹ต๋ฅ ์€ 59.91%๋กœ ๋‚œ์ด๋„์— ๋น„ํ•ด์„œ ์˜ค๋‹ต๋ฅ ์ด ๋†’์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํšจ์œจ์„ฑ ํ‰๊ฐ€๊ฐ€ ๋“ค์–ด๊ฐ”๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ๋งต ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ํ†ต๊ณผ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋‹ต๊ฒŒ ํฐ ๊ณ ๋ฏผ ์—†์ด ์—ฐ๊ด€ ๋ฐฐ์—ด(๋งต)์„ ์ด์šฉํ•ด์„œ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
record ๋ฅผ ์ˆœํšŒ ํ•˜๋ฉด์„œ
Enter, Leave ์ธ ๊ฒฝ์šฐ ์œ ์ € ์•„์ด๋””์™€ ํ•จ๊ป˜ ์ •๋‹ต์— ์ถœ๋ ฅ๋  ๋ฉ”์‹œ์ง€์˜ ์ข…๋ฅ˜๋ฅผ ๊ธฐ๋ก์„ ํ•ด๋‘ก๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธฐ๋กํ•ด๋‘” ๊ฒƒ์„ events ๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.Enter, Change ์ธ ๊ฒฝ์šฐ ์—ฐ๊ด€ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ฐ ์œ ์ € ์•„์ด๋””๋ฅผ ํ‚ค๋กœ, ๋‹‰๋„ค์ž„์„ ๊ฐ’์œผ๋กœ ์ €์žฅํ•ด ๋‘ก๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ตœ์ข… ๋‹‰๋„ค์ž„์„ ์œ ์ € ์•„์ด๋””๋ณ„๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ events ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฑ„ํŒ…๋ฐฉ์— ์ถœ๋ ฅํ•  ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ์—ฐ๊ด€ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์•„์ด๋””๋ณ„ ์ตœ์ข… ๋‹‰๋„ค์ž„์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

728x90