17일차 - 알고리즘 코드카타

2024. 8. 6. 10:54·Java & Spring/코딩테스트

- 회고

67. 둘만의 암호 : https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

- 풀이 과정

class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            int j = 1;
            int idx = 0;
            char c;
            while (idx < index) {
                int a = (int) s.charAt(i) + j + idx;
                if (a > 'z') {
                    a = (a - 'a') % 26 + 'a';
                }
                c = (char) a;
                if (skip.indexOf(c) != -1) {
                    j++;
                } else {
                    if (idx == index - 1) {
                        sb.append(c);
                    }
                    idx++;
                }
            }
        }
        String answer = sb.toString();
        return answer;
    }
}
  1. 첫번째 for문을 통해 문자열 s의 각 문자를 순회
  2. while문을 통해 문자열 s의 각 문자의 index번째 문자를 찾음
  3. 찾는 과정 중 해당 문자가 skip에 포함된다면 지나가는 조건 추가
  4. index에 도달한 문자를 다시 StringBuilder을 통해 결과값 문자열 생성

※ 문제를 풀면서 문자에 특정값을 추가하다가 a-z의 범위를 벗어난 경우에 대해

    처음에는 -26(문자의 갯수)를 하였으나 a(97), z(122)인 아스키 코드에서
    a에 26이상의 숫자가 더해지면 -26을 해도 문자가 될 수 없다.
   그러므로 ((처음문자 + index) - 'a') % 26 + 'a'를 진행한다

  • 처음문자 'z' = 122
  • index = 30 → 처음문자 + index = 152(문자 a-z범위 초과)
  • 'a' = 97 → 152 - 97 = 55
  • 55 % 26 = 3
  • 3 + 'a' = 3 + 97 = 100 = 'd'

 

- 진행

일자 완료 번호
24.07.16 ~ 24.07.31 1~63
24.08.01 64
24.08.02 65
24.08.05 66
24.08.06 67
   
   
   
   
   
   
   
   

'Java & Spring > 코딩테스트' 카테고리의 다른 글

19일차 - 알고리즘 코드카타  (2) 2024.08.08
18일차 - 알고리즘 코드카타  (0) 2024.08.07
16일차 - 알고리즘 코드카타  (0) 2024.08.06
15일차 - 알고리즘 코드카타  (1) 2024.08.05
14일차 - 알고리즘 코드카타  (0) 2024.08.01
'Java & Spring/코딩테스트' 카테고리의 다른 글
  • 19일차 - 알고리즘 코드카타
  • 18일차 - 알고리즘 코드카타
  • 16일차 - 알고리즘 코드카타
  • 15일차 - 알고리즘 코드카타
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
        • 자격증
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java 메서드
    프로그래머스 java 기초 트레이닝
    java 에라토스테네스의 체
    Java 생성자
    데이터 크기
    java 멤버
    java super
    자료구조
    Java this
    java 제어자
    프로그래머스 java 기초트레이닝
    데이터 타입
    java 세수의합
    java 유클리드 호제법
    java기초
    java
    java arrays.copyofrnage()
    개발로드맵
    java enhance switch
    java two-pointer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
17일차 - 알고리즘 코드카타
상단으로

티스토리툴바