BaekJoon Oline Judge - Step 8
2292. 벌집
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
int count = 1, six = 6, index = 1;
while(true) {
if(N > index) {
index += six;
six += 6;
count++;
} else
break;
}
System.out.println(count);
}
}
1193. 분수찾기
규칙을 찾아보자면, 홀수일 때는 분모--, 분자++이고 짝수일 때는 분모++, 분자--이다.
그러므로 i를 1부터 증가시키면서, 홀수인지 짝수인지 판단해서 분모, 분자를 계산해주면 됨!
그리고 카운트를 하나 선언해놓고 분모, 분자 계산이 끝나면 1씩 증가시키면서 카운트가 14와 같을 때 break해주고 분수를 출력해주면 되는 문제이다.
여기서 헤맸던 점은 분모와 분자를 계산할 때 어떤 수를 기준으로 하느냐였는데 위에 표를 보면 뺄 때는 i가 기준이 되는 것을 볼 수 있다.
i가 2라면 2부터 빼주면 되고, 3이면 3부터 빼주면 되는 것! 더할 때는 0부터 차례로 1씩 더해주면 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
//m:분모, n:분자
int m = 0, n = 0, count = 0;
for (int i=1; i<N; i++) {
for (int j=0; j<i; j++) {
if (i % 2 != 0) { //홀수
m = i - j;
n = j + 1;
}else { //짝수
m = j + 1;
n = i - j;
}
count++;
if (count == N) {
System.out.print(m+"/"+n);
break;
}
}
}
}
}
이렇게 풀었더니 시간초과 뜸. 그래서 break를 하나 더 걸어주었다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
//m:분모, n:분자
int m = 0, n = 0, count = 0;
boolean flag = false;
for (int i=1; i<N; i++) {
for (int j=0; j<i; j++) {
if (i % 2 != 0) { //홀수
m = i - j;
n = j + 1;
}else { //짝수
m = j + 1;
n = i - j;
}
count++;
if (count == N) {
System.out.print(m+"/"+n);
flag = true;
break;
}
}
if(flag)
break;
}
}
}
10250. ACM 호텔
답은 나오는데 채점만 돌리면 틀렸다고 해서 엄청 헤맸다 ㅠㅠ 아래가 틀린 코드
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int t=0; t<T; t++) {
int H = scan.nextInt();
int W = scan.nextInt();
int N = scan.nextInt();
int XX=0, YY=0;
if(H*W == N) {
XX = (N / H);
YY = H * 100;
} else {
XX = (N / H) + 1;
YY = (N % H) * 100;
}
System.out.println(YY+XX);
}
scan.close();
}
}
수정한 코드...!
4 + 3 일때 403, 12 + 3일때 1203을 만들어주어야 하므로 100을 YY에 곱해서 각각 400, 1200을 만들고 XX를 더해주면 됨!
(N - 1)을 해주지 않고 문제를 풀게 되면, 맨 꼭대기에 맨 끝 층일때 예외가 발생한다. 그러므로 -1 해주기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int t=0; t<T; t++) {
int H = scan.nextInt();
int W = scan.nextInt();
int N = scan.nextInt();
int XX = (N - 1) / H;
int YY = (N - 1) % H;
int resXX = XX + 1;
int resYY = (YY + 1)*100;
System.out.println(resYY+resXX);
}
scan.close();
}
}
'CS > Baekjoon' 카테고리의 다른 글
[Algorithm] 백준 단계별로 풀어보기 - 단계 9. 수학(2) (0) | 2019.07.10 |
---|---|
[Algorithm] 백준 단계별로 풀어보기 - 단계 8. 규칙 찾기 (2) (0) | 2019.06.28 |
[Algorithm] 백준 단계별로 풀어보기 - 단계 7. 문자열 (0) | 2019.04.17 |
[Algorithm] 백준 단계별로 풀어보기 - 단계 6 (0) | 2019.04.16 |
[Algorithm] 백준 단계별로 풀어보기 - 단계 5 (0) | 2019.04.15 |