난이도가 급 상승한 느낌이다... 한 문제를 몇 시간 동안 쳐다보고 있는지 모를 정도였다.
내 부족한 수학 실력에 대해서 깨우칠 수 있었던 시간이었던 것 같다.
이거.. 수학도 같이 공부해두면 좋을 것 같다.
1316
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Test1316 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
int count = 0;
//그룹단어이냐 아니냐의 불리언
boolean isGroup;
while (br.ready()) {
String str = br.readLine();
isGroup = true;
ArrayList<Character> list = new ArrayList<>();
for(int i = 0; i < str.length(); i++) {
//배열에 포함되어 있아도 되는데, 다음 문자로 바뀐 다음에 한 번 더 나오면 안됨
//포함안되어 있으면 배열에 넣어준다.
if(!contains(list, str.charAt(i))) {
list.add(str.charAt(i));
} else {
//포함이 되어있을때,
//전에 문자와 다를때 (이건 같은 문자가 한번 더 추가 되었다는 뜻)
//그렇다면 이건 그룹 단어가 아니다.
//첫 실행을 하면 Array 예외가 생기므로, 처음엔 체크하지 않는다.
if(i != 0) {
if(str.charAt(i) != str.charAt(i - 1)) isGroup = false;
}
}
}
//그룹 단어라면 카운트를 하나 추가한다.
if(isGroup) {
count++;
}
}
System.out.print(count);
}
//char배열안에 char가 속해있는지 확인하는 메서드
private static boolean contains(ArrayList<Character> chs, char ch) {
int length = chs.size();
for(int i = 0; i < length; i++) {
if(chs.get(i) == ch) {
return true;
}
}
return false;
}
}
이 문제 같은 경우에 시간이 정말 오래 걸렸지만,
최대한 답을 보지 않고 하기 위해 애를 많이 썼다.
효율적인 방법은 아닌 것 같지만, 스스로 풀려고 노력했다는 것에 의의를 두었다.
1712
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Test1712 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken()); //고정비용
int B = Integer.parseInt(st.nextToken()); //재료비, 인건비
int C = Integer.parseInt(st.nextToken()); //노트북 가격
if(C <= B) {
System.out.print("-1");
} else {
System.out.print((A / (C - B)) + 1);
}
}
}
이 문제도 솔직히 너무 어려웠다.
이 코드는 답을 본 코드이지만,
이 간단해 보이는 식을 풀려고, 이것 저것 많이 시도해 보았다.
그러면서 답을 보고 좌절했다.. 생각보다 간다한 수학식으로 풀었던 것이다.
최대한 많은 문제를 접하고, 여러 유형을 풀어서 패턴을 파악하는 연습을 주로 해야겠다.
배웠던 수학들이 전부 기억나지 않아 나 스스로가 원망스러워진 문제였다,...
2292
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test2292 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int count = 1; // 겹 수(최소 루트)
int range = 2; // 범위 (최솟값 기준)
if (N == 1) {
System.out.print(1);
}
else {
while (range <= N) { // 범위가 N보다 커지기 직전까지 반복
range = range + (6 * count);
count++;
}
System.out.print(count);
}
}
}