-
[Algo Rhythm๐บ๐] 2019 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ๋ฆฌํฌ๋ฃจํ ์คํ ์ฑํ ๋ฐฉAlgo Rhythm๐บ๐/others 2020. 7. 3. 00:31
๋ฌธ์ ์ค๋ช
์นด์นด์คํก ์คํ์ฑํ ๋ฐฉ์์๋ ์น๊ตฌ๊ฐ ์๋ ์ฌ๋๋ค๊ณผ ๋ํ๋ฅผ ํ ์ ์๋๋ฐ, ๋ณธ๋ ๋๋ค์์ด ์๋ ๊ฐ์์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์ฑํ ๋ฐฉ์ ๋ค์ด๊ฐ ์ ์๋ค.
์ ์ ์ฌ์์ธ ๊นํฌ๋ฃจ๋ ์นด์นด์คํก ์คํ ์ฑํ ๋ฐฉ์ ๊ฐ์คํ ์ฌ๋์ ์ํด, ๋ค์ํ ์ฌ๋๋ค์ด ๋ค์ด์ค๊ณ , ๋๊ฐ๋ ๊ฒ์ ์ง์ผ๋ณผ ์ ์๋ ๊ด๋ฆฌ์์ฐฝ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ฑํ ๋ฐฉ์ ๋๊ตฐ๊ฐ ๋ค์ด์ค๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ ๋ฐฉ์์ ๋๊ตฐ๊ฐ ๋๊ฐ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋๊ฐ์ต๋๋ค."
์ฑํ ๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง์ด๋ค.
-
์ฑํ ๋ฐฉ์ ๋๊ฐ ํ, ์๋ก์ด ๋๋ค์์ผ๋ก ๋ค์ ๋ค์ด๊ฐ๋ค.
-
์ฑํ ๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ค.
๋๋ค์์ ๋ณ๊ฒฝํ ๋๋ ๊ธฐ์กด์ ์ฑํ ๋ฐฉ์ ์ถ๋ ฅ๋์ด ์๋ ๋ฉ์์ง์ ๋๋ค์๋ ์ ๋ถ ๋ณ๊ฒฝ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฑํ ๋ฐฉ์ Muzi์ Prodo๋ผ๋ ๋๋ค์์ ์ฌ์ฉํ๋ ์ฌ๋์ด ์์๋๋ก ๋ค์ด์ค๋ฉด ์ฑํ ๋ฐฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"Muzi๋์ด ๋ค์ด์์ต๋๋ค."
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ ๋ฐฉ์ ์๋ ์ฌ๋์ด ๋๊ฐ๋ฉด ์ฑํ ๋ฐฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ์์ง๊ฐ ๋จ๋๋ค.
"Muzi๋์ด ๋ค์ด์์ต๋๋ค."
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
"Muzi๋์ด ๋๊ฐ์ต๋๋ค."
Muzi๊ฐ ๋๊ฐํ ๋ค์ ๋ค์ด์ฌ ๋, Prodo ๋ผ๋ ๋๋ค์์ผ๋ก ๋ค์ด์ฌ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์ฑํ ๋ฐฉ์ ๋จ์์๋ Muzi๋ Prodo๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
"Prodo๋์ด ๋๊ฐ์ต๋๋ค."
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ ๋ฐฉ์ ์ค๋ณต ๋๋ค์์ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ํ์ฌ ์ฑํ ๋ฐฉ์๋ Prodo๋ผ๋ ๋๋ค์์ ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ ๋ช ์ด ์๋ค. ์ด์ , ์ฑํ ๋ฐฉ์ ๋ ๋ฒ์งธ๋ก ๋ค์ด์๋ Prodo๊ฐ Ryan์ผ๋ก ๋๋ค์์ ๋ณ๊ฒฝํ๋ฉด ์ฑํ ๋ฐฉ ๋ฉ์์ง๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
"Ryan๋์ด ๋ค์ด์์ต๋๋ค."
"Prodo๋์ด ๋๊ฐ์ต๋๋ค."
"Prodo๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ ๋ฐฉ์ ๋ค์ด์ค๊ณ ๋๊ฐ๊ฑฐ๋, ๋๋ค์์ ๋ณ๊ฒฝํ ๊ธฐ๋ก์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด record๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ๊ธฐ๋ก์ด ์ฒ๋ฆฌ๋ ํ, ์ต์ข ์ ์ผ๋ก ๋ฐฉ์ ๊ฐ์คํ ์ฌ๋์ด ๋ณด๊ฒ ๋๋ ๋ฉ์์ง๋ฅผ ๋ฌธ์์ด ๋ฐฐ์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ํ์ฌํญ
-
record๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด ๋ด๊ธด ๋ฐฐ์ด์ด๋ฉฐ, ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์ด๋ค.
-
๋ค์์ record์ ๋ด๊ธด ๋ฌธ์์ด์ ๋ํ ์ค๋ช ์ด๋ค.
-
๋ชจ๋ ์ ์ ๋ [์ ์ ์์ด๋]๋ก ๊ตฌ๋ถํ๋ค.
-
[์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ [๋๋ค์]์ผ๋ก ์ฑํ ๋ฐฉ์ ์ ์ฅ - Enter [์ ์ ์์ด๋] [๋๋ค์] (ex. Enter uid1234 Muzi)
-
[์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ ์ฑํ ๋ฐฉ์์ ํด์ฅ - Leave [์ ์ ์์ด๋] (ex. Leave uid1234)
-
[์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ ๋๋ค์์ [๋๋ค์]์ผ๋ก ๋ณ๊ฒฝ - Change [์ ์ ์์ด๋] [๋๋ค์] (ex. Change uid1234 Muzi)
-
์ฒซ ๋จ์ด๋ Enter, Leave, Change ์ค ํ๋์ด๋ค.
-
๊ฐ ๋จ์ด๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ผ๋ฉฐ, ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์, ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค.
-
์ ์ ์์ด๋์ ๋๋ค์์ ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ค.
-
์ ์ ์์ด๋์ ๋๋ค์์ ๊ธธ์ด๋ 1 ์ด์ 10 ์ดํ์ด๋ค.
-
์ฑํ ๋ฐฉ์์ ๋๊ฐ ์ ์ ๊ฐ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฑ ์๋ชป ๋ ์ ๋ ฅ์ ์ฃผ์ด์ง์ง ์๋๋ค.
๋๋ ์ด๋ป๊ฒ ํ์๋
import java.util.ArrayList; import java.util.HashMap; class Enterence { public String uid; public int enterence; public Enterence(String uid, int enterence) { this.uid = uid; this.enterence = enterence; } } class Solution { private static final int EXIT = 0; private static final int ENTER = 1; public String[] solution(String[] record) { String[] answer; ArrayList<String> ansList = new ArrayList<>(); ArrayList<Enterence> enterSec = new ArrayList<>(); HashMap<String, String> idNname = new HashMap<String, String>(); for(int i = 0; i < record.length; i++) { String[] rec = record[i].split(" "); String command = rec[0]; String uid = rec[1]; String nickName = (rec.length > 2) ? rec[2] : ""; switch(command) { case "Enter" : idNname.put(uid, nickName); enterSec.add(new Enterence(uid, ENTER)); break; case "Leave" : enterSec.add(new Enterence(uid, EXIT)); break; case "Change" : idNname.replace(uid, nickName); break; } } for(Enterence ent : enterSec) { String nickName = idNname.get(ent.uid); switch(ent.enterence) { case EXIT: ansList.add(nickName + "๋์ด ๋๊ฐ์ต๋๋ค."); break; case ENTER: ansList.add(nickName + "๋์ด ๋ค์ด์์ต๋๋ค."); break; } } answer = ansList.stream().toArray(String[]::new); return answer; } }
๋๋ ์ ์ ๋ ๊ฒ ํ์๋
๋ฌธ์ ๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ ์ ๋ง๋ค ๊ณ ์ ํ id์ธ uid๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ๊ฒฐ๊ตญ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ๋ฐ๊พผ ๋๋ค์์ด ์ถ๋ ฅ๋จ์ ์ ์ ์๋ค. ๊ทธ๋์ ๋๋ key๊ฐ์ผ๋ก๋ uid๋ฅผ, value๊ฐ์ผ๋ก๋ nickname์ ๊ฐ๋ hashmap์ ๋ง๋ค์ด์ ์ ์ ๊ฐ์์ ๋๋ค์์ ํ์ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด ์ฝ๋์์ ์ฃผ๋ชฉํ ๊ฒ์ด Entrance๋ผ๋ ํด๋์ค๋ฅผ ์ ์ธํ๋๋ฐ ์ด๊ฒ์ ์ ์ ๋ค์ ์ถ์ ๊ธฐ๋ก์ ๋ํ๋ด๋ ํด๋์ค์ด๋ค. ํน์ ๋์ค์ enter์ exit ์ธ์ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ์ถ๊ฐ๋ ์๋ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํด ์ผ๋จ Int๊ฐ์ผ๋ก enterence๋ผ๋ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ฐ์ง๊ฒ ํ๋ค.
๋ฐฐ๊ฒฝ ์ค๋ช ์ ์ฌ๊ธฐ๊น์ง๊ณ ์๊ณ ๋ฆฌ์ฆ์ ๊ต์ฅํ ๊ฐ๋จํ๋ค. record๋ฅผ ์ํํ๋ฉด์ command, uid, nickname์ ํ์ ํ ๋ค command์ ๋ฐ๋ผ ์ฒ๋ฆฌํด์ฃผ๊ณ ๋์ค์ ์ถ์ ๊ธฐ๋ก๋ค์ ๋ชจ์๋์ list๋ฅผ ์ํํ๋ฉด์ ๋ฌธ์์ด์ ๋ชจ์์ฃผ๋ฉด ๋๋ค. ํ์ฅ์ฑ์ ๊ณ ๋ คํด์ if๋ฌธ ๋์ switch๋ฌธ์ ์ฌ์ฉํ๋๋ฐ ๋ด๊ฐ ๋ณผ ๋๋ ํ ๋์ ์ฝ๋๊ฐ ์ ๋ค์ด์์ ๋๋ฌด ๋ฟ๋ฏํ๋ค ๐
๋๋ ๋ฌด์์ ๋ฐฐ์ ๋
์ด ๋ฌธ์ ๋ ๋ด๊ฐ ์ฒ์ ํผ ์นด์นด์ค ๋ฌธ์ ์ธ๋ฐ ํ๋ฉด์ ์ ์นด์นด์ค๊ฐ ์ฝ๋ฉ ํ ์คํธ์ ํธ๋ ๋๋ฅผ ์ด๋๋์ง ์ ์ ์์๋ค.
์ ๋ง ์์ง์ ๋ฌธ์ ์๋ค. ์ฌํ ํ์ด๋ณธ ๋ฌธ์ ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์ง๋ฌธ์ด ๊ธด ํธ์ธ๋ฐ ์ง๋ฌธ์์ ํํธ๋ฅผ ๋ค ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ผผ๊ผผ์ด ์ฝ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๋ฟ๋ง ์๋๋ผ ์ด๋ฒ ๋ฌธ์ ๋ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์๋ฅผ ๋๋ฆ ์๊ฐํด์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ๋ ๋ง์ ์๋ฃ๋ค์ ์ฝ๊ณ ์ฐ์ตํ๋ฉด์ ํด๋ฆฐ ์ฝ๋์ ๊ฐ๊น์์ง๋ฆฌ๋ผ๊ณ ๋ค์งํ๋ค.
'Algo Rhythm๐บ๐ > others' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-