본문 바로가기

2020. 10. 24. 00:20
NumPy 초기화 함수 정리 - random, arange, zeros, ones import numpy as np np.random.rand(size) [0,1) 범위의 실수값을 생성하여 size 크기의 array 리턴. np.random.randn(size) rand 함수와 같음 + 랜덤값들이 정규분포를 따름 np.random.randint(m*, n, size, dtype) [m, n) 범위의 정수값을 생성하여 size 크기의 array 리턴. m값만 입력할 경우 m 미만의 정수값만 생성. np.random.choice(a*, size, replace=True, p=None) array a 의 element들로 size 크기의 랜덤 array 생성. (p: 각 element가 등장할 확률분포. None일 경우 정규분포를 따름) np.random.random(size) np.ran..
2020. 6. 18. 19:23
자바 손익분기점, 이동횟수 구하기 (백준 1712, 1011) 회사의 고정비용과 물건 하나 당 가변비용, 판매가격이 주어질 때 손익분기점을 넘어 수익이 발생하기 위한 최소 판매수량을 찾는 문제. 반복문을 돌려 수익이 발생하는 시점을 알아낼 수도 있지만 판매수량을 찾는 수식만 세우면 반복문 없이 쉽게 풀 수 있다. import java.io.*; import java.util.*; class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer sc = new StringTokenizer(br.readLine(),..
2020. 6. 4. 12:58
자바 String 공백 처리, 빈도 계산 (백준 1152, 1157) 입력 : 영문 대소문자와 공백으로 이루어진 문장 출력 : 단어의 개수 먼저 문자열을 trim()하여 앞뒤 공백을 모두 없앤 후 남은 게 빈 문자열이면 0, 아니라면 단어의 개수를 출력한다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 0; String s = sc.nextLine().trim(); if(s=="") System.out.println(0); else{ String l[] = s.split(" "); System.out.println(l.length); } } ..
2020. 5. 26. 18:10
백준 한수의 개수 구하기 (백준 1065 자바) 한수는 수학적으로 통용되는 개념은 아니다. 이 문제는 자리수가 각자 등차수열을 이루는 수의 개수를 구하는 문제로 보면 된다. 예를 들어, 1234는 양의 정수이며 수열 1 2 3 4 는 등차수열이므로 1234는 한수이다. 100의 자릿수로 분리하면 1 0 0 인데 이는 등차수열이 아니므로 100은 한수가 아니다. 이를 알고리즘으로 구현하려면 어떻게 해야 할까? 1) 한 자리 숫자는 한수로 정의한다. 수열은 '규칙이 있는 숫자의 나열'인데, 한 자리 숫자라고 해서 이 정의에 위배되지는 않는다. 어차피 한수는 통용되는 개념이 아니므로 이 문제에서 그렇게 정의한다고 보면 된다. 2) 두 자리 숫자는 모두 공차가 정해진 등차수열이므로 한수이다. 3) 세 자리 숫자부터는 공차를 계산해 등차수열인지 확인해야 한다...
2020. 5. 26. 14:51
자바 평균 구하기, 정수 실수 형변환(백준 1546, 4344 정답 코드) 메소드 이용 없이 직접 평균을 구할 때는 숫자들을 모두 합산한 뒤 숫자의 개수로 나누면 된다. // 입력: 첫 번째 줄에 개수, 두번째 줄에 시험점수 // 출력: 시험점수의 max값을 적용한 조작된 평균 // 유의점: 오차를 최소화하기 위해 숫자를 double형으로 입력받은 후 계산해야 한다. import java.util.*; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(num == 0) System.out.println(num); else{ double cur = sc.nextInt(); double sum = ..
2020. 5. 22. 00:02
자바 최솟값, 최댓값 구하기 (백준 배열 2562, 10818 코드) 최솟값 또는 최댓값을 구하는 알고리즘은 항상 같다. 1) 결과값을 첫 번째 값으로 초기화시킨 후 2) 최솟값의 경우 다음 숫자가 더 작다면, 반대로 최댓값의 경우에는 크다면 결과값을 해당 값으로 업데이트한다. 입력이 끝날때까지 숫자를 비교하며 이 과정을 반복한다. // 입력 : 첫 번째 줄에 숫자의 개수, 두 번째 줄에 n개의 정수 // 출력 : 최솟값과 최댓값 import java.io.*; class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buf..
2020. 5. 22. 00:01
두 번째로 큰 수를 출력하는 간단한 프로그램 (백준 10871 자바) 세 개의 수를 입력하면 그 중 두 번째로 큰 수를 구하는 프로그램이다. sorting을 할 때도 주로 이용되는 방법으로, 경우의 수를 나눈 후 숫자를 두 개씩 차례대로 비교해 더 큰 수가 결과값에 저장되도록 하면 된다. array나 tokenizer 없이 nextInt() 메소드와 if문을 이용해 간단하게 구현하였다. import java.util.*; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int s = 0; if(a>b){ if(b>c) s=b; else if(a>c..
2020. 5. 20. 00:44
EOF(End of File)란? 자바 커맨드에서 EOF처리하기 (백준 10591 자바 코드) EOF는 입력의 개수가 주어지지 않고 입력값만 들어오는 경우, 입력(파일)이 끝났다는 것을 어떻게 알아낼 것이냐에 대한 개념이다. 개수를 모르므로 FOR문보다는 WHILE문을 이용한다. EOF는 간단하게 처리할 수 있다. 새롭게 라인을 읽어왔는데 그 값이 null이면 더 이상 읽을 것이 없다는 의미이므로 루프를 끝내면 된다. (예제 코드 참고) 자바에서 커맨드라인을 이용해 입력값을 주는 경우, CTRL+Z를 누른 뒤 엔터키를 누르면 입력이 끝난 것으로 처리된다. import java.io.*; class Main{ public static void main(String[] args) throws IOException { BufferedReader br =..
2020. 5. 14. 15:14
while문 쓰는 팁 (백준 11021 자바) 지금까지 while문 반복조건 안에서 변수를 증감할 생각은 못했었는데, 다른 사람들 코드를 보다가 while문 안에서 ++를 시키는 것을 발견했다. 전에 for문과 while문의 차이에 대해 while은 for와 비교해 여러 줄로 작성되는 것을 차이점으로 언급했었는데, 이렇게 괄호 안에서 증감시키면 더 쓰기 간편해진다. 아래 예제에서 while(num > 0) { num--; } 대신 while(num-- > 0) { }으로 쓸 수 있다. 이게 뭐 대단한거라고 좋아하냐^^ 입력 : 첫째 줄에 라인 개수, 둘째 줄부터 공백으로 구분된 A와 B 출력 : 형식에 맞게 A+B를 출력 import java.io.*; class Main{ public static void m..
2020. 5. 7. 15:29
자바 1부터 N까지 출력하기 (백준 2741번 N 찍기) 1) bufferedreader를 이용해 숫자 N을 입력받는다 2) string으로 읽힌 숫자를 parseInt 메소드를 이용해 int로 형변환한다. 3) while loop를 사용해서 1부터 N에 도달할 때까지 숫자를 하나씩 늘려가며 출력한다. import java.io.*; class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int num = Integer.pa..