1292
쉽게 푸는 문제
- 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... 이런 수열에서 A번째~B번째 항의 합을 출력하라.
import java.util.Scanner;
public class bj1292_0130 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
sc.close();
int cnt = 1;
int sum = 0;
for (int i = 1; i <= B; i++) {
for (int j = 0; j < i; j++) {
if (cnt >= A)
sum += i;
if (cnt >= B) {
System.out.println(sum);
return;
}
cnt++;
}
}
}
}
- 간단해보여도 간결한 코드를 짜려고 욕심부리다보니 시간을 지체했다,,
- 결국 좀 고전적인 방법을 쓴 것 같은데 그래도 배열이나 리스트를 사용하지 않았다.
1316
그룹 단어 체커
- cazzzzbb 는 c a z b가 모두 연속해서 나타나므로 그룹 단어이지만,
- aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
- N을 입력받고, N개의 문자열이 입력된다. 그 중 그룹 단어의 개수를 출력하라.
import java.util.Scanner;
public class bj1316_0130 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int res = N;
String[] str = new String[N];
for (int i = 0; i < N; i++)
str[i] = sc.next();
sc.close();
// 몇 번 스트링
lp: for (int i = 0; i < N; i++) {
int len = str[i].length();
// 각 스트링 첫 글자부터
for (int j = 0; j < len - 1; j++) {
// 현재 검사할 문자
char jthChar = str[i].charAt(j);
// 처음으로 다른 문자가 나오는 인덱스 (디폴트는 다음 문자)
int firstDiff = j + 1;
// 그걸 찾기 위한 포문
for (int k = j + 1; k < len; k++) {
if (str[i].charAt(k) != jthChar) {
break;
}
firstDiff++;
}
// 첫 다른 글자부터 또 같은 문자가 나오는지
for (int l = firstDiff; l < len; l++) {
if (jthChar == str[i].charAt(l)) {
res--;
continue lp;
}
}
}
}
System.out.println(res);
}
}
- 일단... 알고리즘 자체는 이게 맞지 않나 싶은데...
- 더 쉬운 방법이 있는지 궁금하긴 하다.
1292
뒤집힌 덧셈
- 함수 rev()는 모든 자리수가 역순인 수를 얻을 수 있다. 예를 들어 123은 321, 100은 1이다.
- rev( rev(A) + rev(B) ) 을 구하라.
import java.util.Scanner;
public class bj1357_0130 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String A = sc.next();
String B = sc.next();
System.out.println(rev(Integer.toString(rev(A) + rev(B))));
sc.close();
}
static int rev(String n) {
int res = 0;
for (int i = 0; i < n.length(); i++) {
res += (n.charAt(i) - '0') * Math.pow(10, i);
}
return res;
}
}
- 뒤집는 거라서 그냥 String을 쓰려고 생각했다.
- 해보니까... length를 쓸 수 있다는 점이 너무 장점이긴 하다.
- 그래서 길이만큼을 뒤집어서 일의 자리부터 만들 수 있으니까... 좋긴 한데
- rev가 rev 안에 있는 만큼, Integer.toString을 써야 하는 건 단점이라면 단점이겠다...
'PS - BOJ' 카테고리의 다른 글
1408 - 24 (0) | 2022.01.31 |
---|---|
1193 - 분수찾기, 1225 - 이상한 곱셈, 1233 - 주사위 (0) | 2022.01.28 |
1157 - 단어 공부 (0) | 2022.01.27 |
1100, 1110, 1159 - 하얀 칸, 더하기 사이클, 농구 경기 (0) | 2022.01.27 |
1026, 1037, 1085 - 보물, 약수, 직사각형에서 탈출 (0) | 2022.01.26 |