2225.Β Find Players With Zero or One Losses

  • 전체 ν”Œλ ˆμ΄μ–΄ 쀑 μž„μ˜μ˜ 두 ν”Œλ ˆμ΄μ–΄κ°€ μˆ˜ν–‰ν•œ 경기의 κ²°κ³Ό λͺ©λ‘ matches 이 μ£Όμ–΄μ‘Œμ„ λ•Œ ν•œ λ²ˆλ„ μ§„ 적이 μ—†λŠ” ν”Œλ ˆμ΄μ–΄μ˜ λͺ©λ‘κ³Ό λ”± ν•œ 번만 μ§„ ν”Œλ ˆμ΄μ–΄μ˜ λͺ©λ‘μ„ κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.
    • λΆ€κ°€μ μœΌλ‘œ ν”Œλ ˆμ΄μ–΄μ˜ λͺ©λ‘μ€ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ λ˜μ–΄μžˆμ–΄μ•Ό ν•œλ‹€.
  • ꡳ이 λ©”λͺ¨λ¦¬ 곡간을 효율적으둜 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†λ‹€λ©΄ λ¬Έμ œλŠ” λ‹¨μˆœν•˜λ‹€. μΆœν˜„ν•œ λͺ¨λ“  ν”Œλ ˆμ΄μ–΄λ₯Ό λ²ˆν˜Έλ³„λ‘œ λ§ˆν‚Ήν•˜κ³  각 ν”Œλ ˆμ΄μ–΄ 별 경기의 패배 횟수λ₯Ό μ„Όλ‹€.
  • κ·Έ λ‹€μŒ λͺ¨λ“  ν”Œλ ˆμ΄μ–΄ λ²ˆν˜Έμ— λŒ€ν•΄μ„œ μΆœν˜„ν•œ ν”Œλ ˆμ΄μ–΄λ§Œ κ³¨λΌμ„œ 패배 횟수λ₯Ό κΈ°μ€€μœΌλ‘œ λͺ©λ‘μ„ λ§Œλ“€λ©΄ λœλ‹€.
class Solution { public List<List<Integer>> findWinners(int[][] matches) { List<List<Integer>> result = new ArrayList<>(); List<Integer> noLost = new ArrayList<>(); List<Integer> oneLost = new ArrayList<>(); boolean[] present = new boolean[100_000 + 1]; int[] counter = new int[100_000 + 1]; for (int[] match : matches) { present[match[0]] = present[match[1]] = true; ++counter[match[1]]; } for (int i = 0; i < counter.length; ++i) { if (!present[i]) continue; if (counter[i] == 0) noLost.add(i); if (counter[i] == 1) oneLost.add(i); } noLost.sort(Comparator.naturalOrder()); oneLost.sort(Comparator.naturalOrder()); result.add(noLost); result.add(oneLost); return result; } }