분류 전체보기 126

Java Math 메소드

random() 메소드random() 메소드는 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환합니다.이 메소드는 내부적으로 java.util 패키지의 Random 클래스를 사용한 의사 난수 발생기를 사용하여 임의의 수를 생성- 예제 123456789101112System.out.println((int)(Math.random() * 100)); // 0 ~ 99 Random ran = new Random(); System.out.println(ran.nextInt(100)); // 0 ~ 99 (int)(Math.random() * 6); // 0 ~ 5 ((int)(Math.random() * 6) + 1); // 1 ~ 6 ((int)(Math.random() * 6)..

Programming/Java 2019.01.20

알고리즘 문제풀이(Java) - 백준 9095번(1, 2, 3 더하기)

백준 온라인 저지 9095번(Java) 출처 : https://www.acmicpc.net/problem/9095 동적계획법(DP)를 연습하기위해 기초 문제를 풀어보았다. 재귀를 활용한 동적계획법으로 풀기 위해서 두 가지 관점으로 접근해보았다. 첫번째, 전체 문제를 부분 문제로 나눌 수 있을까? 두번째 , 재귀 함수를 이용하기 위해 규칙을 찾고 이를 통해 점화식을 구할 수 있을까? 노트에 끄적끄적이다보니 어느정도 실마리를 찾을 수 있었다. 예를들어 n = 4일 경우 1+1+1+11+1+2 1+2+1 2+1+12+21+3 3+1 의 총 7가지이다. 또 n = 5일 경우 1+1+1+1+1 1+1+1+2 1+1+2+1 1+2+1+1 2+1+1+11+1+3 1+3+1 3+1+12+2+1 2+1+2 1+2+2의 ..

알고리즘 문제풀이(Java) - 백준 9012번(괄호검사)

백준 9012번 괄호검사 소괄호만을 이용하여 괄호검사를 하기 때문에 비교적 쉬운 문제에 속한다.1. 문제 조건 분석먼저 첫 줄에 들어오는 숫자가 만큼 괄호를 반복해서 입력받는다. 입력받은 괄호 문자열이 올바른 괄호의 구성이면 YES, 그렇지 않으면 NO를 출력한다. 2. 변수 선언num : 첫 줄에서 입력받은 숫자. num 길이 만큼의 배열이 생성ps 배열 : 입력받은 숫자만큼 괄호를 담을 배열ps 배열은 다음과 같이 생성된다.(())()) (((()())() (()())((())) ((()()(()))(((())))() ()()()()(()()())() (()((())()( ans 배열 : YES 또는 NO를 담을 배열. ps배열을 괄호검사 하여 ps[0]이 올바른 괄호이면 ans[0]에 YES 입력 ..

배열(Arrays) 관련 메소드

1. copyOfRange() 메소드copyOfRange() 메소드는 전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환. 첫 번째 매개변수 : 복사의 대상이 될 원본 배열을 전달받음.두 번째 매개변수 : 원본 배열에서 복사할 시작 인덱스를 전달받음.세 번째 매개변수 : 마지막으로 복사될 배열 요소의 바로 다음 인덱스를 전달받음. 즉, 세 번째 매개변수로 전달된 인덱스 바로 전까지의 배열 요소까지만 복사됩니다.그리고 원본 배열과 같은 타입의 복사된 새로운 배열을 반환합니다. int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = Arrays.copyOfRange(arr1, 2, 4);for (int i = 0; i

Programming/Java 2019.01.07

알고리즘 문제풀이(Java) - 달팽이문제(2차원배열)

달팽이 문제란 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 와 같이 숫자가 시계방향으로 돌아가면서 바깥부터 안쪽으로 채워지는 형태의 2차원 배열을 구현하는것을 의미한다. 숫자는 어차피 1씩 증가하면서 배열에 저장되므로 중점을 두고 보아야 할 부분은 '배열의 index'이다. 편의상 배열의 index는 arr[i][j]로 한다. 달팽이 문제는 크게 다음과 같은 두가지 관점으로 볼 수 있다. 가로(width)부분은 j값의 증감 세로(length)부분은 i값의 증감 1set를 시작지점에서 가로 혹은 세로의 끝 지점까지 간다고 볼 때 각 set는 다음과 같다. 0~5까지를 보면 arr[0][0], arr[0][1] , arr[0][2], ..

프로그래머스 코딩테스트 Level 1. 자바 문자열 합치기

문제 : 길이가 n이고, "수박수박수박수"와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을, n이 3이면 "수박수"를 리턴하면 됩니다. 문제를 해결하기 위해는 문자열의 결합을 알아야한다. C언어는 워낙 문자열 처리하는게 귀찮아서 문자열 관련 문제를 많이 피했어서 그런지 문자열 처리는 항상 익숙하지 않다. 개인적으로 파이썬이 문자열을 처리하는데 좋은 메소드들과 연산이 있다고 생각한다. 하지만 이제 Java를 배우는 기간이기 때문에 최대한 Java로 문제를 풀어보려고 한다. 예를들어 String s = "hello"; 이라고 해보자 만약 hellohellohello , 즉 hello를 반복해서 3번 출력하려면 어떻게 해야할까? 안타깝게도 Ja..

Problem Solving 2019.01.01