day46 πŸŒ•

μž₯λ―ΈΒ·2022λ…„ 7μ›” 29일
0

였늘의 μ„±κ³Ό

λͺ©λ‘ 보기
46/129

μŠ€ν”„λ§ MVC 2편 - λ°±μ—”λ“œ μ›Ή 개발 ν™œμš© 기술 μ„Ήμ…˜ 4 μˆ˜κ°•

μ„Ήμ…˜ 4. 검증1 - Validation
검증 직접 처리 - κ°œλ°œκΉŒμ§€ μˆ˜κ°• μ™„λ£Œ

μ›Ή μ„œλΉ„μŠ€λŠ” 폼 μž…λ ₯ μ‹œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄, 고객이 μž…λ ₯ν•œ 데이터λ₯Ό μœ μ§€ν•œ μƒνƒœλ‘œ μ–΄λ–€ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€ μΉœμ ˆν•˜κ²Œ μ•Œλ €μ£Όμ–΄μ•Ό ν•œλ‹€.
컨트둀러의 μ€‘μš”ν•œ μ—­ν•  쀑 ν•˜λ‚˜λŠ” HTTP μš”μ²­μ΄ 정상인지 κ²€μ¦ν•˜λŠ” 것이닀.

고객이 μƒν’ˆ 등둝 νΌμ—μ„œ μƒν’ˆλͺ…을 μž…λ ₯ν•˜μ§€ μ•Šκ±°λ‚˜, 가격 μˆ˜λŸ‰ 등이 검증 λ²”μœ„λ₯Ό λ„˜μ–΄μ„œλ©΄ μ„œλ²„ 검증 둜직이 μ‹€νŒ¨ν•΄μ•Ό ν•œλ‹€.
μ΄λ ‡κ²Œ 검증이 μ‹€νŒ¨ν•œ 경우 κ³ κ°μ—κ²Œ λ‹€μ‹œ μƒν’ˆ 등둝 폼을 보여주고, μ–΄λ–€ 값을 잘λͺ» μž…λ ₯ν–ˆλŠ”μ§€ μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

검증 였λ₯˜ 보관
Map<String, String> errors = new HashMap<>();
검증 μ‹œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ μ–΄λ–€ κ²€μ¦μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€ 정보λ₯Ό λ‹΄μ•„λ‘”λ‹€.
μ–΄λ–€ ν•„λ“œμ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ 였λ₯˜κ°€ λ°œμƒν•œ ν•„λ“œλͺ…을 key둜 μ‚¬μš©ν•œλ‹€.

정리
1. λ§Œμ•½ 검증 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ μž…λ ₯ 폼을 λ‹€μ‹œ 보여쀀닀.
2. 검증 였λ₯˜λ₯Ό κ³ κ°μ—κ²Œ μ•ˆλ‚΄ν•΄μ„œ λ‹€μ‹œ μž…λ ₯ν•  수 있게 ν•œλ‹€.
3. 검증 였λ₯˜κ°€ λ°œμƒν•΄λ„ 고객이 μž…λ ₯ν•œ 데이터가 μœ μ§€λœλ‹€.


ν† ν”½ 볡슡 (λ‹€λ₯Έ νŒ€μ›λ“€μ΄ μ •λ¦¬ν•œ κ±° 염탐)


μ½”ν…Œ 1문제

+) 22. 08. 02 02:58 μΆ”κ°€ πŸ₯Ή

μ™„μ£Όν•˜μ§€ λͺ»ν•œ μ„ μˆ˜

참고둜 μ œν•œμ‚¬ν•­ 처리 μ•ˆ ν•œ μ½”λ“œμž…λ‹ˆλ‹€.

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        Map<String, Integer> map = new HashMap<>();

        for (String s : participant) {
            map.put(s, map.getOrDefault(s, 0) + 1);
        }

        for (String s : completion) {
            map.put(s, map.getOrDefault(s, 0) - 1);
        }

        for (String s : map.keySet()) {
            if(map.get(s) >= 1) {
                answer = s;
            }
        }
        
        return answer;
    }
}

μ²˜μŒμ—” λ‹Ήμ—°νžˆ ν•΄μ‹œ 문제길래 HashSet μ“°λ©΄ 될 쀄 μ•Œμ•˜λŠ”λ° 그게 μ•„λ‹ˆμ—ˆλ‹€... κ·Έλ ‡κ²Œ ν•˜λ©΄ 쀑볡값이 μ•„μ˜ˆ μ œκ±°λΌμ„œ 동λͺ…이인 μ²˜λ¦¬κ°€ λΆˆκ°€ν•¨...
κ·Έλž˜μ„œ λ¨Όμ € 배열끼리 κ°’ λΉ„κ΅ν•˜κ³ , κ·Έ λ‹€μŒμ— λ‚¨λŠ” κ°’λ§Œ ν•΄μ‹œμ…‹μœΌλ‘œ μ²˜λ¦¬ν•˜λ‚˜? μ‹Άμ—ˆλŠ”λ° 그러면 또 동λͺ…이인이 λ‚ μ•„κ°€ 버림... 계속 ν•΄μ‹œμ…‹ κ°–κ³  λ‚œλ¦¬μΉ˜λ‹€κ°€ κ²°κ΅­ 검색해 λ΄€λ‹€.

닡은 ν•΄μ‹œμ…‹μ΄ μ•„λ‹ˆλΌ ν•΄μ‹œλ§΅μ΄μ—ˆμŒ. πŸ₯²
ν•΄μ‹œλ§΅μ— μ°Έκ°€μž 이름(s)μ΄λž‘ κ°’(map.getOrDefault(s, 0) + 1) λ„£κ³ , κ·Έ λ‹€μŒμ— λ‹€μ‹œ μ°Έκ°€μž 값을 ν•˜λ‚˜ λΉΌμ€€λ‹€. 값을 톡해 μ°Έκ°€μžμ™€ μ™„μ£Όμžλ₯Ό λΉ„κ΅ν•˜λŠ” 것이닀.
참고둜 getOrDefault(Key, DefaultValue)λŠ” μ°ΎλŠ” ν‚€κ°€ μ‘΄μž¬ν•˜λ©΄ ν•΄λ‹Ή 킀에 λ§€ν•‘λ˜μ–΄ μžˆλŠ” 값을 λ°˜ν™˜ν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ λ””ν΄νŠΈ 값이 λ°˜ν™˜λœλ‹€κ³  ν•œλ‹€.

λ§Œμ•½ participant에 "μž₯λ―Έ"λΌλŠ” 이름이 두 개 있으면 key값에 "μž₯λ―Έ"κ°€ 두 번 λ“€μ–΄κ°€λ―€λ‘œ valueλŠ” 2κ°€ λœλ‹€. (이 λ•Œ value에 +1을 μ•ˆ ν•΄μ£Όλ©΄ κ·Έλƒ₯ λ””ν΄νŠΈ 값인 0이 λ‚˜μ˜¨λ‹€.)

그리고 value값을 1 뺐을 λ•Œ 0이 λœλ‹€λ©΄ μ°Έκ°€μžκ°€ μ™„μ£Όν–ˆλ‹€λŠ” μ†Œλ¦¬μ΄λ―€λ‘œ, valueκ°€ 1 이상인 μ‚¬λžŒ, 즉, μ™„μ£Όν•˜μ§€ λͺ»ν•œ μ‚¬λžŒμ„ answer에 λ„£κ³  λ°˜ν™˜ν•œλ‹€.

μƒˆλ²½μ΄λΌ 말이 μ—„μ²­ κΌ¬μ˜€λŠ”λ° μžμ„Έν•œ μ„€λͺ…은... 이 λΆ„ κ±Έ μ°Έκ³ ν•˜λŠ” 게 쒋을 것 κ°™λ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€... 덕뢄에 9점 λ°›μ•˜μ–΄μš”...

profile
김뉴비

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보