반응형

 

안녕하세요 Jin's 입니다.

 

백준 알고리즘의 수학1 중 벌집 ( 문제 번호 : 2292 )의 소스입니다.

 

Java와 Python 두가지 버전 소스입니다.

 

[1번 줄]

1

 

[2번 줄]

2~7 -> 6

 

[3번 줄]

8~19 -> 12

 

[4번 줄]

20~37 -> 18

 

줄(=> 몇번 지나가야 있는지 알수있는 숫자)을 보면 6씩 증가합니다.

적어도 줄의 마지막 숫자안에 들어가 있으면 해당 줄의 수만큼만 지나면 되어

줄의 숫자를 구한다는 생각으로 해보았습니다.

 

1) JAVA

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 row=1;
		int last_num=1;
		while(true){
			if(last_num>=n) break;
			last_num+=6*row;
			row++;
		}
			System.out.println(row);
	}
}

 

2) PYTHON

n = int(input())
row = 1
max_num = 1

while True:
    if max_num >= n:
        print(row)
        break
    max_num += 6*row
    row += 1

 

여러분도 한번 풀어보세요!

 

 

반응형
반응형

 

안녕하세요 Jin's 입니다.

 

백준 알고리즘의 수학1 중 달팽이는 올라가고 싶다 ( 문제 번호 : 2869 )의 소스입니다.

 

 

Java와 Python 두가지 버전 소스입니다.

 

해당 문제는 순서를 파악하면 금방 풀 수 있기 때문에 순서와 홀수/짝수 라인 변화되는 공식을 파악하면 

더 빨리 푸실 수 있을거에요.

 

[ 홀수 라인 ]

1번 : 1/1

 

[ 짝수 라인 ]
2번 : 1/2 
3 : 2/1


[ 홀수 라인 ]
4 : 3/1
5 : 2/2
6 : 1/3

 

[ 짝수 라인 ]
7 : 1/4
8 : 2/3
9 : 3/2
10 : 4/1

 

1) JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		int x = scan.nextInt();
		scan.close();
		int max = 0;
		int line = 0;
		//줄을 찾아야함
		for(int i=1;i<=x;i++){
			max += i;
			if(max>=x){
				line=i;
				break;
			}
		}
		//짝수는 오른쪽부터
		if(line%2==0){
			System.out.println((line-(max-x))+"/"+(1+max-x));
		}else{
			System.out.println((1+max-x)+"/"+(line-(max-x)));
		}
	}
}

 

2) PYTHON

   파이썬도 위의 자바의 개념으로 풀면 성공!

x = int(input())
line = 0
max = 0
for i in range(1, x+1):
    line = i
    max += i
    if max >= x:
        break

a = line-(max-x)
b = 1+max-x
if line % 2 == 0:
    print(a, '/', b, sep='')
else:
    print(b, '/', a, sep='')

 

여러분도 한번 풀어보세요!

 

 

 

반응형
반응형

안녕하세요 Jin's 입니다.

 

백준 알고리즘의 수학1 중 손익분기점 ( 문제 번호 : 1712 )의 소스입니다.

 

 

Java와 Python 두가지 버전 소스입니다.

 

1) JAVA

   시간제한이 0.35초라 런타임에러가 떠서 BufferedReader와 StringTokenizer를 사용했다.

   그리고 A, B, C는 21억 이하의 자연수라고 해서 long으로 처리하였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class backJoon_1712 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		long a = Integer.parseInt(st.nextToken());
		long b = Integer.parseInt(st.nextToken());
		long c = Integer.parseInt(st.nextToken());
		br.close();
		
		if(c <= b){
			System.out.println(-1);
		}else{
			System.out.println(a /(c-b) +1);
		}
	}
}

 

2) PYTHON

a, b, c = list(map(int, input().split()))
if b >= c:
    print(-1)
else:
    print((a // (c-b))+1)

 

여러분도 한번 풀어보세요!

 

반응형

+ Recent posts