백준 2920번
https://www.acmicpc.net/problem/2920
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.
1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.
연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.
Pass
import java.util.*;
import java.io.*;
public class Main {
static int arr[][] = new int[100100][26];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for(int t=1; t<=T; t++) {
sb.append("Case #").append(t).append(": ");
long result = 0;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int Q = Integer.parseInt(st.nextToken());
char chArr[] = br.readLine().toCharArray();
for(int i=1; i<=N; i++) {
for(int j=0; j<26; j++) {
if(chArr[i-1] - 'A' == j) arr[i][j] = arr[i-1][j] + 1;
else arr[i][j] = arr[i-1][j];
}
}
while(Q-->0) {
st = new StringTokenizer(br.readLine());
if(checkPalindrome(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()))) result++;
}
sb.append(result).append('\n');
}
bw.write(sb.toString()); bw.flush(); bw.close();
} // End of main
private static boolean checkPalindrome(int L, int R) {
long odd = 0; // 홀수의 개수
for(int i=0; i<26; i++) {
odd += (arr[R][i] - arr[L-1][i]) % 2;
}
if(odd < 2) return true;
return false;
} // End of checkPalindrome
} // End of Main class
import java.io.*
import java.util.*
private lateinit var st : StringTokenizer
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
st = StringTokenizer(br.readLine())
val num1 = st.nextToken().toInt()
if(num1 == 1) find_ascending()
else if(num1 == 8) find_descending()
else print("mixed")
} // End of main
fun find_ascending() {
for(i in 2..8) if(st.nextToken().toInt() != i) { print("mixed"); return }
print("ascending")
} // End of find_ascending
fun find_descending () {
for(i in 7 downTo 1) if(st.nextToken().toInt() != i) { print("mixed"); return }
print("descending")
} // End of find_descending