Day6 - 수 조작하기 1

2025. 7. 14. 10:32·CODING TEST/programmers

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 수 조작하기 1

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181926

 

 

📌 문제 요약

- 핵심 조건: control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값 바꿈.

  • "w" : n이 1 커집니다. / "s" : n이 1 작아집니다. / "d" : n이 10 커집니다. / "a" : n이 10 작아집니다.

위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 

- 제한: -100,000 ≤ n ≤ 100,000  /  1 ≤ control의 길이 ≤ 100,000

 

 

📌 내 풀이 및 코드

class Solution {
    public int solution(int n, String control) {        
        for (int i=0; i<control.length(); i++) {
            if (control.charAt(i) == 'w') {
                n += 1;
            } else if (control.charAt(i) == 's') {
                n -= 1;
            } else if (control.charAt(i) == 'd') {
                n += 10;
            } else {
                n -= 10;
            }
        }
        return n;
    }
}

- return에다가 식을 적어보려고 했는데 그러면 값이 누적이 안되기 때문에 틀렸음.

- 근데 한 가지 단점 : 불필요한 else에서 'a' 아닌 다른 값도 걸릴 수 있기 때문에 조심해야 함.

 

 

📌 다른 사람들 풀이

// 1
for(char ch : control.toCharArray()) {
    switch(ch) {
        case 'w': answer += 1; break;
        case 's': answer -= 1; break;
        case 'd': answer += 10; break;
        case 'a': answer -= 10; break;
        default:break;
    }
}


// 2
for(char c : control.toCharArray()){
    n += c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10;
}
return n;

<-- 다른 풀이 요약 -->

- 1 : for-each, switch문 : control.toCharArray()로 문자 하나씩 받음. 혹시 모를 예외 문자도 커버 가능함.

- 2 : for-each, 삼항연산자 : 깔끔하게 문자 하나씩 순회하고 최단 코드. but 내 코드처럼 'a'외 다른 문자도 -10 적용되므로 조심



📌 짧은 회고 및 문법

- for-each문과 삼항연산자를 잘 활용하지 못하는 것 같다. 코드를 간결하고 가독성 좋게 보이게 하려면 스킬이 살짝 필요한 느낌인데.. 그래도 삼항연산자는 되면 써보려고 하는데 이번 문제처럼 중첩 삼항 연산자는 처음 봄. 근데 중첩 삼항 연산자는 가독성 때문에 너무 복잡해져서 쓰지 않는 걸 추천한다고 함. 가독성이 좋고 효율적인 코드를 만드는 그 날까지.. :(

// 중첩 삼항 연산자 한 줄
n += c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10;


// 계단식으로 표현
n += (
    c == 'w' ? 1 :        // c가 'w'면 1,
    (c == 's' ? -1 :      // 아니면 c가 's'면 -1,
    (c == 'd' ? 10 : -10) // 아니면 c가 'd'면 10, 그 외엔 -10
));

'CODING TEST > programmers' 카테고리의 다른 글

Day6 - 마지막 두 원소  (0) 2025.07.14
Day5 - 이어 붙인 수  (0) 2025.07.14
Day5 - 코드 처리하기  (0) 2025.07.14
Day5 - 등차수열의 특정한 항만 더하기  (0) 2025.07.12
Day5 - 원소들의 곱과 합  (0) 2025.07.12
'CODING TEST/programmers' 카테고리의 다른 글
  • Day6 - 마지막 두 원소
  • Day5 - 이어 붙인 수
  • Day5 - 코드 처리하기
  • Day5 - 등차수열의 특정한 항만 더하기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    우리fisa
    java
    백준
    클라우드서비스개발
    회고
    AWS Certified Cloud Practitioner
    baekjoon
    프로젝트 리팩토링
    토익 스피킹
    감행
    SQL
    우리fis아카데미
    Programmers
    회고록
    COS Pro
    우리 fisa
    CLF-C02
    toeic speaking
    프로그래머스
    AWS Certification
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Day6 - 수 조작하기 1
상단으로

티스토리툴바