반응형

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

 

백준 알고리즘의 팩토리얼 ( 문제 번호 : 10872)의 풀이입니다.

 

 

import java.util.Scanner;
 
public class Main {
 
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(factorial(n));
    }

    private static int factorial(int n){
        if(n<=1) return 1;
        return n*factorial(n-1);
    }
}

 

 

 


[ 링크 ]

https://www.acmicpc.net/problem/10872

 

 

반응형
반응형

 

 

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

 

백준 알고리즘의 수학2 중 직각삼각형 ( 문제 번호 : 4153 )의 소스입니다.

 

 

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

* 직사각형 공식 z² = x² + y²

 

1) JAVA

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while(true){
			ArrayList<Integer> list = new ArrayList<>();
			int x = 0;
			for(int i=0; i<3; i++){
				x = scan.nextInt();
				list.add(x);
			}
			if(x==0) break;

			list.sort(Comparator.naturalOrder());
			
			if(Math.pow(list.get(2), 2)== Math.pow(list.get(0), 2)+Math.pow(list.get(1), 2)){
				System.out.println("right");
			}else{
				System.out.println("wrong");
			}	
		}
		scan.close();
	}

}

 

2) PYTHON

while True:
    t = sorted(list(map(int, input().split())))
    if sum(t) == 0:
        break
    else:
        if t[2] ** 2 == (t[1] ** 2 + t[0] ** 2):
            print('right')
        else:
            print('wrong')

 

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

 

 

반응형
반응형

 

 

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

 

백준 알고리즘의 수학2 중 소수 찾기 ( 문제 번호 : 1978 )의 소스입니다.

 

 

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

 

1) JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.nextLine());
		int result = n;
		for(int i=0; i<n; i++){
			int temp = scan.nextInt();
			if(temp==1) result--;
			for(int j=2;j<temp;j++){
				if(temp%j==0){
					result--;
					break;
				}
			}
		}
		System.out.println(result);
		scan.close();
	}

}

 

2) PYTHON

n = int(input())
num_list = map(int, input().split())
result = n
for i in num_list:
    if i == 1:
        result -= 1
        continue

    for k in range(2, i):
        if i % k == 0:
            result -= 1
            break
print(result)

 

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

 

 

반응형
반응형

 

 

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

 

백준 알고리즘의 수학1 중 부녀회장이 될테야 ( 문제 번호 : 2775 )의 소스입니다.

 

 

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

 

4층 1 6 21 56
3층 1 5 15 35
2층 1 4 10 20
1층 1 3 6 10
0층 1 2 3 4
층/호 1호 2호 3호 4호

 

공통적으로 0층은 n(호) 마다 추가되고,

그 외의 층들의 인원 수는 예를 들어 302호면 202호+301호 값이 더해지면 된다는 공식을 세울 수 있다.

 

1) JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int t = scan.nextInt(); //test case

		int [][] apartment = new int[15][15];
		
		//초기값 설정
		for(int i=0;i<=14;i++){
			apartment[i][1] = 1;
			apartment[0][i] = i;
		}

		//초기값 이외의 설정
		for(int i=0;i<t;i++){
			int k = scan.nextInt(); //층
			int n = scan.nextInt(); //호
			
			for(int j=1; j<=k; j++){//층만큼 뺑뺑이
				for(int p=2; p<n+1;p++){
					apartment[j][p] = apartment[j-1][p]+apartment[j][p-1];
				}
			}
			System.out.println(apartment[k][n]);
		}
		scan.close();
	}
}

 

2) PYTHON

t = int(input())
for _ in range(t):
    k = int(input())
    n = int(input())

    apartment = [i for i in range(1, n+1)]
    for _ in range(k):
        for j in range(1, n):
            apartment[j] += apartment[j-1]
    print(apartment[n-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 중 달팽이는 올라가고 싶다 ( 문제 번호 : 2869 )의 소스입니다.

 

 

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

 

1) JAVA

   하루에 올라갈 미터는 a-b 이고, 몇일이 걸리는지는 x 라고 하고, (a-b)x+a=v

   x = (v-a)/ (a-b)

  이때 +1을 해주는 이유는 다올라간 후엔 내려가지 않는다는 조건이 있음으로 올라간 마지막날을 더해주는 것

  결과적으로 (v-a)%(a-b)의 나머지가 소숫점이 남아있다면 다음날에 한번 더 올라가야함으로 +1을 해줌

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		int a = scan.nextInt();
		int b = scan.nextInt();
		int v = scan.nextInt();
		int result = (v-a)/(a-b)+1;
		int today = (v-a)%(a-b) ==0?result:result+1;
		System.out.println(today);
		scan.close();
	}
}

 

2) PYTHON

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

a, b, v = map(int, input().split())
result = (v-a)//(a-b) + 1
if (v-a) % (a-b) == 0:
    print(result)
else:
    print(result+1)

 

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

 

반응형
반응형

안녕하세요 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)

 

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

 

반응형
반응형

 

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

 

백준 알고리즘의 문자열 중 크로아티아 알파벳 ( 문제 번호 : 2941 )의 소스입니다.

 

 

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

 

1) JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String alphabat = scan.nextLine();
		scan.close();
		String[] c = {"c=","c-","dz=","d-","lj","nj","s=","z="};
		for(int i=0; i<c.length;i++){
			while(alphabat.contains(c[i])){
				alphabat = alphabat.replaceFirst(c[i], " ");
			}
		}
		System.out.println(alphabat.length());
	}

}

 

2) PYTHON

alpha = input()
word = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
for i in word:
    alpha = alpha.replace(i, ' ')
print(alpha.__len__())

 

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

 

반응형

+ Recent posts