[프로그래머스 Lv1.] 155652번 둘만의 암호 (JAVA)

2025. 4. 24. 14:10·Coding Test/프로그래머스[JAVA]

문제 설명

두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다.

  • 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다.
  • index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다.
  • skip에 있는 알파벳은 제외하고 건너뜁니다.

예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 규칙대로 바꾸면 "appy"가 되며 결과는 "happy"가 됩니다.

 

두 문자열 s와 skip, 그리고 자연수 index가 매개변수로 주어질 때 위 규칙대로 s를 변환한 결과를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 5 ≤ s의 길이 ≤ 50
  • 1 ≤ skip의 길이 ≤ 10
  • s와 skip은 알파벳 소문자로만 이루어져 있습니다.
    • skip에 포함되는 알파벳은 s에 포함되지 않습니다.
  • 1 ≤ index ≤ 20

입출력 예

s skip  index  result
"aukks" "wbqd" 5 "happy"

풀이

class Solution {
    public String solution(String s, String skip, int index) {
        String answer = "";
        
        for(int i=0; i<s.length(); i++) {
            char ch = s.charAt(i);
            int stop = 0;
            
            while(stop < index) {
                ch = (char) ((ch - 97 + 1) % 26 + 97); // z인경우 a로 시작되기 위해 나머지 + 97을 함
                if(!skip.contains(String.valueOf(ch))) stop++; // 문자가 문자열에 포함되어 있는지 확인
            }
            answer += ch;
        }
        return answer;
    }
}

 

저작자표시 비영리 변경금지 (새창열림)

'Coding Test > 프로그래머스[JAVA]' 카테고리의 다른 글

[프로그래머스 Lv1.] 42577번 전화번호 목록 (JAVA)  (0) 2025.06.10
[프로그래머스 Lv1.] 42576번 완주하지 못한 선수 (JAVA)  (0) 2025.06.10
[프로그래머스 Lv1.] 77484번 로또의 최고 순위와 최저 순위 (JAVA)  (0) 2025.01.08
[프로그래머스 Lv1.] 17682번 [1차] 다트 게임 (JAVA)  (0) 2025.01.07
[프로그래머스 Lv1.] 42840번 모의고사 (JAVA)  (0) 2024.12.12
'Coding Test/프로그래머스[JAVA]' 카테고리의 다른 글
  • [프로그래머스 Lv1.] 42577번 전화번호 목록 (JAVA)
  • [프로그래머스 Lv1.] 42576번 완주하지 못한 선수 (JAVA)
  • [프로그래머스 Lv1.] 77484번 로또의 최고 순위와 최저 순위 (JAVA)
  • [프로그래머스 Lv1.] 17682번 [1차] 다트 게임 (JAVA)
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    Java
    리눅스마스터
    데이터
    Spring Security
    DB
    spring
    Flutter
    스프링 부트 쇼핑몰 프로젝트 with JPA
    pcce 기출문제
    CS
    리눅스마스터 1급
    시큐리티
    postgresql
    JPA
    programmers
    스프링부트
    springboot
    스프링
    python
    Oracle
    플러터
    프로그래머스
    리눅스
    baekjoon
    CS지식
    자바
    Linux
    backjoon
    백준
    데이터베이스
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[프로그래머스 Lv1.] 155652번 둘만의 암호 (JAVA)
상단으로

티스토리툴바