문제 링크
주의사항
- JAVA를 사용하여 프로그램을 사용하였습니다.
- 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{
public static void main(String[] args){
}
}
문제 설명
접근 방법
- BufferedReader를 사용하여 입력 값을 받았습니다.
- 분수를 찾는 findFractional과 홀수,짝수를 구분하는 odd_even_number 함수를 구현하였습니다.
- 분수 범위가 1씩 증가하기 때문에 start에 1씩 더하여 입력값이 속해있는 범위를 찾았습니다.
- 범위를 찾은 후 시작하는 방향을 구하기 위해 stack이 홀수이면 위로 짝수이면 아래로 되도록 하였습니다.
- 방향에 맞게 분모와 분자에 값을 더하고 빼서 분모를 구하여 결과를 도출하였습니다.
- findFractional함수에 결과를 result에 받았습니다.
- result를 bw에 저장하였습니다.
- BufferedWriter를 통해 저장된 결과를 출력하였습니다.
결과 코드
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력 값을 받는 BufferedReader
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//결과를 출력하는 BufferedWriter
long num = Integer.parseInt(br.readLine()); //입력값 저장
String result = findFractional(num); //함수 결과값 받기
bw.write(result + "\n"); //결과 bw에 저장
bw.flush(); //결과 출력
bw.close();
br.close();
}
public static String findFractional(long num) { //분수 찾기 함수
long plus = 2,start = 1,temp; //범위 더하는 값, 비교 값, 임시 값
int stack = 1,molecules,denominator; //시작 분수, 분자, 분모
boolean check; //시작하는 방향 체크
String result=""; //결과값 반환 변수
if(num==1)
return "1/1"; //1/1일때 그대로 반환
else {
for(;;) { //무한 반복함수
temp = start;
start+=plus;
stack++;
if(num<=start) {//입력 값 범위 안에 있을 때 무슨 분수를 가지는지 도출
check = odd_even_number(stack);
temp = num - temp;
if(check) {
molecules = 1;
denominator = stack;
for(int i=1;i<temp;i++) {
molecules++;
denominator--;
}
}else {
molecules = stack;
denominator = 1;
for(int i=1;i<temp;i++) {
molecules--;
denominator++;
}
}
break;
}
plus++;
}
}
result = String.valueOf(molecules) + "/" + String.valueOf(denominator); //결과 String형
return result; //결과 반환
}
public static boolean odd_even_number(int num) { //홀수, 짝수로 방향 정하는 함수
if(num%2==0)
return true;
else
return false;
}
}
'백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)10250번, ACM 호텔 (0) | 2021.12.30 |
---|---|
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)2869번, 달팽이는 올라가고 싶다. (0) | 2021.12.29 |
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)2292번, 벌집 (0) | 2021.12.28 |
[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)1712번, 손익분기점 (0) | 2021.12.28 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)1316번, 그룹 단어 체커 (0) | 2021.12.25 |
댓글