Coding Planet

ASCII μ½”λ“œ 총정리_ μ΄μ œλŠ” 그만 ν—·κ°ˆλ¦¬κ³  μ‹Άλ‹€(ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ λ‘˜λ§Œμ˜ μ•”ν˜Έ 풀이) λ³Έλ¬Έ

🎁 μ½”λ”©ν…ŒμŠ€νŠΈ/μ•Œκ³ λ¦¬μ¦˜

ASCII μ½”λ“œ 총정리_ μ΄μ œλŠ” 그만 ν—·κ°ˆλ¦¬κ³  μ‹Άλ‹€(ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ λ‘˜λ§Œμ˜ μ•”ν˜Έ 풀이)

jhj.sharon 2023. 10. 13. 15:35
λ°˜μ‘ν˜•

 

 

 

 

μ»΄ν“¨ν„°λŠ” μ‚¬λžŒμ˜ μ–Έμ–΄λ₯Ό κ·ΈλŒ€λ‘œ μΈμ‹ν•˜μ§€ μ•ŠλŠ”λ‹€. ASCIIλŠ” μ‚¬λžŒμ˜ 언어인 문자λ₯Ό μ»΄ν“¨ν„°μ˜ 언어인 숫자둜 μΈμ½”λ”©ν•˜λŠ” 문자 μΈμ½”λ”©μ˜ ν‘œμ€€μ΄λ‹€. ASCII μ½”λ“œλŠ” 총 128개의 문자λ₯Ό μœ„μ™€ 같이 숫자둜 μ§€μ •ν•˜μ—¬ μΈμ‹ν•œλ‹€.

 

예λ₯Όλ“€μ–΄ 사과 'apple'은 '97, 112, 112, 108, 101'둜 λ³€ν™˜λ˜λŠ” 것이닀. ASCII ν‘œλ₯Ό λͺ¨λ‘ μ™ΈμšΈ ν•„μš”λŠ” μ—†μ§€λ§Œ μ½”λ”©ν…ŒμŠ€νŠΈμ—λ„ 자주 λ“±μž₯ν•˜λŠ” 문제 ν˜•μ‹μœΌλ‘œ λŒ€λ¬Έμž A(65), Z(90), μ†Œλ¬Έμž a(97), z(122)μ •λ„λŠ” μ™Έμ›Œλ‘λŠ” 것이 μœ μš©ν•˜λ‹€.

 

μ΄λŸ¬ν•œ 방식을 톡해 c + 1μ΄λΌλŠ” 계산식이 μ»΄ν“¨ν„°μ—μ„œλŠ” μ‹€μ œλ‘œ μ΄λ£¨μ–΄μ§€λŠ” 것이닀. cλŠ” ASCII μ½”λ“œμƒ 43μ΄λ―€λ‘œ c+1은 44κ°€λœλ‹€.

 

λ‹€λ§Œ μ΄λ•Œ μ£Όμ˜ν•΄μ•Όν•  것은 ASCII μ½”λ“œ κ°’ 49λ²ˆμ— ν•΄λ‹Ήν•˜λŠ” '1'은 숫자 1이 μ•„λ‹ˆλΌ 문자 '1'μ΄λΌλŠ” 점이닀. μˆ«μžμ™€ λ¬ΈμžλŠ” μ»΄ν“¨ν„°μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ 데이터 μœ ν˜•μœΌλ‘œ μ²˜λ¦¬λœλ‹€.

 

μœ„ λ‚΄μš©μ„ μ°Έκ³ ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ lv1문제인 λ‘˜ 만의 μ•”ν˜Έλ₯Ό ν’€μ–΄λ³΄μž

 

 

 

 

class Solution {

    public String solution(String s, String skip, int index) {
        String answer = "";

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            for (int j = 0; j < index; j++) {
                c += 1;
                if (c > 'z') {
                    c -= 26;
                }
                if (skip.contains(String.valueOf(c))) {
                    j--;
                }
            }
            answer += c;
        }

        return answer;
    }
}

 

  • charAt()은 λ¬Έμžμ—΄μ˜ νŠΉμ • μœ„μΉ˜μ— μžˆλŠ” 문자λ₯Ό λ°˜ν™˜ν•œλ‹€.  이 λ•Œ 문제의 쑰건 쀑 ν•˜λ‚˜μΈ 'z'λ₯Ό λ„˜μ–΄κ°ˆ 경우(c > 'z') aλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ν•˜κΈ° μœ„ν•΄  if 쑰건문을 μΆ”κ°€ν–ˆλ‹€. 
  • μœ„ μ‘°κ±΄λ¬Έμ—μ„œ 'z'λ₯Ό μž‘μ€ λ”°μ˜΄ν‘œλ‘œ κ°μ‹ΈλŠ” μ΄μœ λŠ” 'z'λ₯Ό 문자둜(char) ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. cκ°€ 문자둜 μžλ£Œν˜•μ΄ μ„ μ–Έλ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이λ₯Ό 맞좰주기 μœ„ν•΄ μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 감싸 μ£Όμ—ˆλ‹€. μ΄λ ‡κ²Œ 문자λ₯Ό λŒ€μ†ŒλΉ„κ΅ν•  수 μžˆλŠ” μ΄μœ λ„ 컴퓨터가 문자λ₯Ό ASCII μ½”λ“œκ°’μœΌλ‘œ λ³€ν™˜μ‹œν‚€κΈ° λ•Œλ¬Έμ΄λ‹€.
  • '-26'을 ν•˜λŠ” 뢀뢄은 경계값 zλ₯Ό λ„˜μ–΄μ„€ 경우 a둜 λŒμ•„κ°€μ•Όν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 'a'와 'z'의 μ•„μŠ€ν‚€ μ½”λ“œ κ°’μ˜ μ°¨μ΄λŠ” 25이닀. index κ°’ 만큼 μ΄λ™ν•˜μ—¬μ•Ό ν•˜λŠ” 경우 여기에 1만큼 λ”ν•΄μ€˜μ•Ό ν•˜λ―€λ‘œ -26이 λ‚˜μ˜¨λ‹€.
  • 문제 쑰건쀑 λ¬Έμžμ—΄ skipμ—μžˆλŠ” 값은 κ±΄λ„ˆλ›°μ–΄μ•Ό ν•˜λ―€λ‘œ skip.contains(String.valueof(c)) 쑰건이 μΆ”κ°€λ˜μ—ˆλ‹€. λ§Œμ•½ 'c'의 값이 λ¬Έμžμ—΄ 'skip'에 ν¬ν•¨λ˜μ–΄μžˆλ‹€λ©΄ 'j'λ₯Ό ν•˜λ‚˜κ°μ†Œμ‹œμΌœμ„œ λ‹€μŒ λ°˜λ³΅μ—μ„œ λ‹€μ‹œ 간은 문자λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•Šλ„λ‘ ν•œλ‹€. Java의 contains()λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ—μ„œ νŠΉμ • λ¬Έμžμ—΄μ„ μ°ΎλŠ” 역할을 ν•˜λ―€λ‘œ 문자 'c'λ₯Ό 직접 νŒŒλΌλ―Έν„°λ‘œ 전달할 수 μ—†λ‹€. String.valueOf(c)λ₯Ό 톡해 λ¬Έμžμ—΄λ‘œ λ³€κ²½ν•˜μ˜€λ‹€.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ°˜μ‘ν˜•
Comments