본문 바로가기

ALGORITHM

(30)
재귀 함수 재귀 함수란? 함수 내에서 자기 자신을(함수)를 계속적으로 호출하면서 풀어가는 방식 함수가 콜 되면서 최근에 자신을 부른 원래 함수가 스택에 차곡차곡 쌓이게 됨. 중요한건 처음 불려진 함수에서(스택 맨 밑에있는 메소드) return 되는 값이 최종 return 값이 된다. 즉, 어떤 수 n을 선언했을 때, n부터 쭉 타고 들어가서 가장 작은 수까지 들어간 다음에 가장 작은 수가 해결이 되면 다시 값을 거슬러 올라가면서 계산을 해서 n!의 값을 반환한다. 팩토리얼 예제 public static int factorial(int n) { if(n == 1) { return 1; } return n * factorial(n-1); // n! = n * factorial(n-1) // 4! = 4 * 3! // ..
[백준 2908 Java] 문자열 뒤집기 - StringBuffer / StringBuilder StringBuffer 클래스를 이용하여 문자열을 뒤집을 수 있다. 문자열을 내림차순으로 배치하는 것이랑은 다르므로 주의!! StringBuffer().append(str) str 데이터를 현재 문자열 끝에 추가 StringBuffer().append(str).reverse() 역순으로 된 문자열 반환 StringBuffer().append(str).reverse().toString() StringBuffer 타입 -> String 타입으로 변환 그 밖에, StringBuilder도 StringBuffer와 똑같은 메서드를 가지고 있으니 참고하자. import java.util.Scanner; public class Ex07 { public static void main(String[] args) { S..
[백준 10809 Java] indexOf() String 클래스의 indexOf()는 입력받은 문자의 위치를 반환해주는 메서드이다. 결과값이 없다면 -1을 반환한다. String str = "abcde"; str.indexOf('a') = 0; str.indexOf('c') = 2; str.indexOf('z') = -1; // 없는 문자는 -1을 반환 아래 문제는 이 특징을 사용하여 풀이하였다. import java.util.Scanner; public class Ex03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); for(char ch = 'a'; ch str.indexOf(a) -> dabin에서 a의 ..
[백준 4344 Java] 변수 선언 / 초기화 위치에 따른 변화 + 소수점 n째 자리까지 출력하기 변수의 초기화 위치에 따라 다른 값이 나와 헷갈렸던 문제. 단순한 문제인데 그동안 변수 선언과 초기화에 대해 아무 생각 없이 코딩했던 것 같아 정리하고자 한다. 일단, 아래 예제는 정답이다. 일부 변수(c, score)는 전역 변수로 선언과 초기화를 한 번에 한 반면, 일부 변수(n, total, count, avg)는 전역 변수로 선언만 하고 초기화는 for문 안에서 한 것을 볼 수 있다. for문 안에서 초기화를 한 이유는, 큰 for문을 한 바퀴 돌면 하나의 테스트 케이스가 실행된 것이기 때문에 다시 돌 때는 새로운 값들로 초기화가 되어야 하기 때문에 for문 바로 아래에 초기화가 된 것을 확인할 수 있다. 더 좋은 방법은 for문 안에서만 사용하는 변수는 for문 안에서 선언하고 초기화하는 것! ..
[백준 2577 Java] String / char / int 형변환 String -> char -> int 형변환 1. String -> char : charAt() 2. char -> int : charAt() - '0' // String -> char 타입 String str = 12345; str.charAt(0); // 1 (char 타입) str.charAt(1); // 2 (char 타입) // char -> int 타입 str.charAt(0) - '0'; // 1 (int 타입) str.charAt(1) - '0'; // 2 (int 타입) char -> String 타입으로의 변환 String.valueOf(char) char ch = 'A'; char[] charArr = new char[] {'a', 'b', 'c'}; String str1 = Str..
[백준 10951 Java] While문 EOF EOF ( End Of File ) 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음 즉, 테스트 케이스의 개수가 주어지지 않음 = 파일 종료 조건이 없음 import java.util.Scanner; public class Ex2 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNextInt()) { // int가 아닌 값을 입력하면 프로그램이 종료됨 int num1 = scan.nextInt(); int num2 = scan.nextInt(); System.out.println(num1 + num2); } } } while(true)를 입력하면 멈출 수 있는 조건도 없으니 ..