SW Expert Academy - 22979. 문자열 옮기기 D3

2025. 1. 8. 23:41·코딩테스트 연습
728x90
반응형
SMALL

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZPOBiaqNo8DFAWB

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

코딩에 앞서  java 초보인 만큼 코드를 작성하면서 고려한 사항과 적용한 함수에 대해서 작성합니다.

java는 다른 언어들에 비해서 문자열과 정수를 입력받는데 개념을 확실히 해야된는 것 같다.

 

1. 문자열 입력

  • next(): 공백을 기준으로 단어 하나만 입력받음.
  • nextLine(): 한 줄을 통째로 입력받음. 공백 포함.

주의사항

  • next()와 nextLine()을 함께 사용할 때, 예상치 못한 동작을 할 수 있음. nextInt()나 next()가 실행된 후에는 남은 개행 문자(\n)가 nextLine()에 의해 읽히게 됨. 이로 인해 nextLine()이 의도한 대로 작동하지 않기도 함.
  • 해결 방법: nextInt()나 next() 뒤에 nextLine()을 넣거나, Integer.parseInt(sc.nextLine())로 처리.

 

 

2. 문자열에서 문자 하나씩 가져오기

  • charAt(): 문자열에서 특정 인덱스의 문자 가져옴.
String str = "Hello";
for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    System.out.println(ch);
}

 

 

3. 문자열 자르기

  • split(): 구분자로 문자열을 나눔.
String str = "Hello World"; String[] arr = str.split(" ");

 

  • substring(): 특정 범위의 문자열을 자름.
 
String str = "Hello World"; String part = str.substring(0, 5); // "Hello"

 

 

 

알고리즘

 

  1. 테스트 케이스 수를 입력받는다.
  2. 각 테스트 케이스마다 문자열과 연산 횟수를 입력받는다.
  3. 연산 값들을 합산해 전체 회전 횟수를 구한다.
  4. 회전 횟수를 문자열 길이로 나눈 나머지만큼만 실제로 회전시킬 수 있다.
  5. 음수 회전 값을 양수로 변환한다.
  6. 문자열을 회전시켜 결과를 출력한다.

 

 

최종코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int t = Integer.parseInt(scanner.nextLine());

        for (int i = 0; i < t; i++) {
            String s = scanner.nextLine();

            int k = Integer.parseInt(scanner.nextLine());

            long totalRotation = 0;
            String[] operations = scanner.nextLine().split(" ");
            for (String operation : operations) {
                totalRotation += Long.parseLong(operation);
            }

            totalRotation %= s.length();

            if (totalRotation < 0) {
                totalRotation += s.length();
            }

            s = s.substring((int) totalRotation) + s.substring(0, (int) totalRotation);

            System.out.println(s);
        }

        scanner.close();
    }
}
728x90
반응형
LIST

'코딩테스트 연습' 카테고리의 다른 글

SW Expert Academy - 2001. 파리 퇴치 D2  (1) 2025.01.10
SW Expert Academy - 1204. 최빈수 구하기 D2  (0) 2025.01.09
프로그래머스 주사위 게임3  (3) 2024.11.23
프로그래머스 주식가격  (6) 2024.10.18
프로그래머스 프로  (2) 2024.10.18
'코딩테스트 연습' 카테고리의 다른 글
  • SW Expert Academy - 2001. 파리 퇴치 D2
  • SW Expert Academy - 1204. 최빈수 구하기 D2
  • 프로그래머스 주사위 게임3
  • 프로그래머스 주식가격
알파 조
알파 조
공부 일기장
  • 알파 조
    Blue Ocean
    알파 조
  • 전체
    오늘
    어제
    • 분류 전체보기 (93)
      • Algorithm (9)
      • Data Structure (3)
      • Python (7)
      • 컴퓨터 구조 요약 (6)
      • 몰입 교육 (7)
      • JavaScript (1)
      • Vue.js (7)
      • 코딩테스트 연습 (40)
      • SpringBoot (9)
      • 데이터베이스 (2)
  • 블로그 메뉴

    • Home
    • Computer structure
    • Algorithm
    • SpringBoot
    • Vuejs
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    항해99
    리그오브레전드 #롤 #LOL #60프레임 버그 #GPU #윈도우10 #롤 60프레임 고정
    오블완
    잔디 기부 캠페인
    잔디 기부
    Git
    MSA 기초
    Udemy#Python#Bootcamp#Object and Data Structure Basics
  • hELLO· Designed By정상우.v4.10.3
알파 조
SW Expert Academy - 22979. 문자열 옮기기 D3
상단으로

티스토리툴바