코딩테스트 36

문자열(String) 메서드

개념String 클래스에서 제공해주는 다양한 메서드들을 잘 활용해 보자! 문자열 인덱스 참조str.charAt(int index): 특정 인덱스에 있는 문자(char)를 리턴해주는 메서드String str = "abcd";char c = str.charAt(1); //b문자 리턴  문자열에서 문자 한개 숫자로 변환 방법public static void doubleStr(String str, int count){ int a = str.charAt(0) - '0'; int b = str.charAt(1) - '0'; //System.out.println("2--------" +a + " " + b); str = String.valueOf(a+b); ..

문자를 숫자로 치환하는 기술

개념 이 기술은 특정 문자를 숫자로 치환하고자 할 때 활용 사용법 자바언어에서는 문자값이 아스키코드값으로 표현되므로, 이를 이용하여 문자를 숫자로 치환 가능 기준이 되는 문자값을 빼주면 해당 문자값이 0으로 치환 예시 1) '0' -> 0으로 변환 아래 코드는 문자 '0'을 숫자 0으로 치환하는 예시 int n = a - '0'; 예시 2) 연속적인 문자들을 숫자로 치환 숫자 문자뿐만 아니라 다른 문자들도 숫자로 치환 가능 단, 해당 문자들이 연속적이여야 함 예시) 'a'부터 'f'까지를 1부터 6까지의 숫자로 치환하고 싶은 경우 //시작 문자 'a'를 빼주면 'a'가 0으로 치환됨 int a = n - 'a' + 1;

2. 구현 유형(시뮬레이션)

개념 정의: 머리속에 있는 알고리즘을 소스코드로 바꾸는 과정 어떤게 구현?: 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 예시: 알고리즘 간단 but 코드가 길어짐 실수 연산에서 특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정한 기준에 따라 끊어서 처리해야 하는 문제 적절한 라이브러리 찾아서 사용해야 하는 문제 (예시 - 순열, 조합) 시뮬레이션 유형 정의: 일련의 명령에 따라 개체를 주어진 공간내에서 이동시키는 문제 행렬(2차원 배열) 알고리즘 문제에서 2차원 공간은 행렬로 사용 방향 벡터 시뮬레이션 및 완전 탐색 문제에서는 방향 벡터가 잘 활용 됨 // 동, 북, 서, 남 순서로 이동 벡터 방향 값 int[] dx = {0, -1, 0, 1}; int[] dy = {1, 0, -..

1. 그리디 알고리즘(탐욕법)

개념정의: 현재 상황에서 지금 당장 좋은 것만 고르는 방법언제 사용?: 여러가지 선택지가 있고, 선택지를 골라서 최적의 방법을 찾는 문제에서 생각해봐야함핵심: 단순히 가장 좋아 보이는 것만 선택해도 최적의 해가 도출되는지를 검토해야함예시: 루트 노드부터 거쳐 가는 노드 합이 최대가 되도록 하는 해 찾기그리디 알고리즘을 선택하여 가장 큰 노드만 찾아서 탐색을 하도록 진행하면 최적해가 나오는지 검토그리디 기법정답5 -> 10 -> 4 = 195 -> 7 -> 9 = 21 해당 문제는 그리디가 아님일반적인 상황에서 그리디는 최적의 해를 보장할 수는 없음하지만 코테에서는 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황을 만듬  문제거스름 돈 최적의 해를 구하기 위해서 가장 큰 화폐 단위부터 ..

형변환( 문자열 <-> 숫자, 문자 배열 )

문자열 -> 숫자 valueOf() 메서드 사용 String str = "1234"; //정수 int a = Integer.valueOf(str); long a = Long.valueOf(str); short a = Short.valueOf(str); //실수 double a = Double.valueOf(str); float a = Float.valueOf(str); 숫자 -> 문자열 String.valueOf() 메서드 사용 //정수 int a = 123; String str = String.valueOf(a); //실수 double a = 12.3; String str = String.valueOf(a); 문자열 -> 문자 배열 toCharArray() 메서드 사용 String str = "asda..

입력(Scanner vs BufferedReader) + 입력값 분리(StringTokenizer, .split())

Scanenr 개념 목적: 적은 양의 입력을 받을 때 사용 특징: 띄어쓰기(space)와 줄바꿈(enter)를 경계로 입력 값을 인식 가공할 필요가 없음 = 원하는 타입으로 바로 입력 받을 수 있음 사용법 Scanner 객체 준비 Scanner sc = new Scanner(System.in); 문자열 입력 String str = sc.next(); 정수 입력 int a = sc.nextInt(); BufferedReader 개념 목적: 많은 양 or 빠른 입력을 받을 때 사용 특징: 오로지 줄바꿈(enter)만을 경계로 입력 값을 인식 입력 받은 데이터는 String으로 고정 사용법 준비 아래 2가지 처리를 진행 메인함수에 예외 발생 처리 추가 BufferedReader 객체 준비 public stat..