반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준] 백준 27913번 SciComLove (2023) 자바(JAVA)

1) 문제번호 : 27913

 

2) 문제 출처

https://www.acmicpc.net/problem/27913

 

27913번: SciComLove (2023)

첫 줄에 두 정수 $N$과 $Q$가 띄어쓰기를 사이에 두고 주어집니다. 둘째 줄부터 $Q+1$번째 줄까지 $Q$개 줄에는 놀이의 과정을 나타내는 $Q$개의 정수 $X_1$, $X_2$, $\cdots$, $X_Q$가 한 줄에 하나씩 주어집

www.acmicpc.net

 

2. 문제

수학토끼가 가장 좋아하는 문자열은 "SciComLove"(따옴표 제외)입니다. 수학토끼는 이 문자열을 너무나도 좋아해서 문자열의 길이를 으로 늘렸습니다. 이때 문자열은 "SciComLove"가 무한히 반복되는 문자열의 길이 인 접두사가 됩니다. 예를 들어, 라면, 문자열은 "SciComLoveSciCo"가 됩니다.

수학토끼는 번의 과정을 반복하며 이 문자열을 가지고 놀고 있습니다. 이들 중  번째 과정은 다음과 같습니다.

  • 문자열의 번째 글자가 대문자면 소문자로, 소문자면 대문자로 바꿉니다. 

번의 놀이 과정이 끝날 때마다, 문자열의 대문자의 개수를 구하는 프로그램을 작성하세요. 모든 변경 사항은 누적됩니다.

 

3. 제약사항

 

4. 입력

첫 줄에 두 정수 가 띄어쓰기를 사이에 두고 주어집니다.

 

5. 출력

번의 놀이 과정이 끝날 때마다 현재 문자열의 대문자의 개수를 한 줄에 하나씩 출력합니다.

 

6. 풀이

- 값을 입력받고, String 형 변수에 10으로 나눠 몫, 나머지 만큼 이어 붙여서 대,소문자 비교를 하면 된다.

 

 

7. 소스 코드

import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = "SciComLove";
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		int Q = Integer.parseInt(st.nextToken());
		
		ArrayList<String> list = new ArrayList<>();
		
		String strResult = "";
		
		for(int i = 0; i < N/10; i++) {
			strResult += str;
		}
		
		for(int i = 0; i < N%10; i++) {
			strResult += str.substring(i, i + 1);
		}
		
		char[] ch = strResult.toCharArray();
		
		for(int i = 0; i < Q; i++) {
			int num = Integer.parseInt(br.readLine());
			
			if(Character.isLowerCase(ch[num-1])) { // 소문자
				ch[num-1] = Character.toUpperCase(ch[num-1]);
			} else { // 대문자
				ch[num-1] = Character.toLowerCase(ch[num-1]);
			}
		
			int cnt = 0;
			
			for(int j = 0; j < ch.length; j++) {
				if(Character.isUpperCase(ch[j])) { // 소문자
					cnt++;
				}
			}
			
			System.out.println(cnt);
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기