본문 바로가기

코딩테스트

(7)
#50 [코테] 수학 알고리즘 (유클리드 호제법 / 에라토스테네스의 체) 수학 알고리즘 유클리드 호제법 : 최대공약수 , 최소공배수를 빠르게 구하는 알고리즘 약수 : 어떤 수를 나누었을 때 0으로 떨어지는 수 (ex. 8의 약수 : 1, 2, 4, 8) 배수 : 어떤 수를 나누었을 때 0으로 떨어지는 수, 자기자신보다 증가하는 수(ex. 8의 배수 : 8, 16, ...) 공약수 : 공통된 약수 -> 4의 약수 : 1, 2, 4 -> 8의 약수 : 1, 2, 4, 8 -> 공약수 : 1, 2, 4 -> 최대공약수 : 4 공배수 : 공통된 배수 -> 4의 배수 : 4, 8, 12, 16, ... -> 8의 배수 : 8, 16, 24, 32, ... -> 공배수 : 8, 16, 24, 32, ... -> 최소공배수 : 8 유클리드 호제법 : r (나머지) a % b = r , r..
#50 [코테] 재귀 함수, 정렬 알고리즘 재귀함수 : 자기자신을 계속 호출하는 함수 (자기자신을 계속 함수에 넣음) * 함수 : 기능을 미리 정의해놓고 호출해서 사용하는 것 (코딩 생산성 향상) public class ReFunction { // 정적함수(전역함수) : static 함수 public static int reSum(int n) { // 3이 들어옴 if(n == 1) return 1; // 결과 내보내기 (함수 종료) : 종료 조건 // n=3 -> reSum(3-1) + 3 => reSum(2) + 3 (3이 아니니까 다시 반복) // n=2 -> reSum(2-1) + 2 => (reSum(1) + 2) + 3 // n=1 -> 1 => (1 + 2) + 3 = 6 return reSum(n-1) + n; } public st..
#50 [코테] 유용한 함수들 주요 알고리즘 종류 : 코딩테스트에서는 주로 구현 / 시뮬레이션 문제가 자주 등장함 - 구현 : 익히 아는 알고리즘 또는 풀이를 코딩으로 변환하는 것 - 시뮬레이션 : 문제에 지시된 규칙을 토대로 코딩을 하는 것 - 누적합 : 이전 합계를 계속 새로운 값과 더해서 누적시켜 현재합계를 구하는 것 코딩 테스트 풀이를 위한 여러가지 팁 & 유용한 함수들 0) 입출력 입력 Scanner scanner = new Scanner(System.in); // 키보드 입력 객체 생성 String input = scanner.next(); // 공백/줄바꿈(엔터) 까지의 입력된 1단어 가져오기 int num = scanner.nextInt(); // 공백/줄바꿈(엔터) 까지의 입력된 1숫자 가져오기 long num2 = ..
#35 [코테] 백준 11365 !밀비급일 StringBuilder : append, reverse 함수 있음 방법 1 : 반복문 통해서 뒤집어서 붙이기 방법 2 : StringBuilder 사용해서 간단하게 바로 출력하기 10808 알파벳 개수 ★ 방법 1) 방법 2) 선생님 방법, 향상된 배열통해 함수 사용 11945 뜨거운 붕어빵 1. 숫자 자리수는 0이 될일이 없으니 조건문으로 M > 0먼저 쓰고 2, 그냥 StringBuilder가 입력을 받는대로 바로 뒤집어서 출력 3. 그래서 반복문 2개 필요없음!!
#27 [JAVA] 코테, String.ValueOf / Interger.ParseInt / StringIndexOf / StringRepeat / StringTrim / StringReverse 11654 아스키 코드 ★ 방법 1) 1. 문자열(문자들의 집합)로 일단 받아야 함 String str = scanner.next( ); // "A" "C" "9" 2. 문자열을 한 문자로 바꾸기 : charAt으로 하나씩 떼야함 char a = str.charAt(0); // 'A' 'C' '9' 3. 문자를 그냥 바로 숫자로 출력하면 아스키코드가 출력됨 int result = (int) a; // A의 아스키코드, C의 아스키코드, 9의 아스키코드 방법 2) 아스키코드로 바로 바꿔주는거 11720 숫자의 합 ★ String.ValueOf : 문자, 정수 -> 문자열 Interger.ParseInt : 문자열 -> 숫자 StringIndexOf : 문자열에서 특정 문자의 위치(인덱스번호) 찾기 함수 (..
#26 [JAVA] 코테, ArrayList(향상된 배열) 나도 빨리 실버풀어야하는데ㅠㅠ 하지말고 쉬운문제들을 풀어서 기초를 탄탄하게 푸는게 좋음 10810 공 넣기 ★난이도 급상승★ 1, 2번 바구니에 공번호 3번을 넣는다 = 1번에 3번공, 2번에 3번공 3,4번 바구니에 공번호 4번을 넣는다. = 3번에 4번공, 4번에 4번공 1,2번 바구니에 1번공을 넣는다. = 1번에 1번공, 2번에 1번공 1. 바구니 갯수에 따라서 그 배열을 만들기 int [ ] arr = new int [basket] : 5 2. 4라는 숫자 = 네번의 방법으로 넣는다 => 반복문 만들기 한번, 두번, 세번, 네번 여기에 처음 바구니, 끝 바구니, 공번호를 입력하기 3. 바구니 배열. 총 5칸의 배열에 넣는 j라는 반복문 만들기 : arr [ j-1 ] = ball ; i 가 0일..
#25 [JAVA] 코테, StringSplit / Integer.parseInt 2739 구구단 10950 A+B - 3 5 : 반복문을 5번 돌리겠다 = 반복문 돌릴 횟수 두 수의 덧셈 8393 합 25304 영수증 25314 코딩은 체육과목 입니다 방법 1) 문자열 누적합 사용 long을 붙이는거니까 String str = " "; 방법 2) 문자열 붙이기 11021 A+B - 7 11022 A+B - 8 2438 별 찍기 - 1 ★ 방법 1) 문자열 누적합 사용 방법 2) 이중 for문 쓰기 2439 별 찍기 - 2 ★ 이중 for문 안에 조건문 if 10952 A+B - 5 ★ break 문 ★ 코딩테스트 하면서 도움될만한 함수 : StringSplit 빈칸으로 자르면 전부 다 배열로 들어감 1. 문자열 배열 준비 2. 배열 출력하기 : 반복문 사용 integer.parseI..