728x90
반응형
728x90
반응형
짝수번째 숫자만 치환 문제: 모든 짝수번째 숫자를 * 로 치환하시오.(홀수번째 숫자,또는 짝수번째 문자를 치환하면 안됩니다.) Example: a1b2cde3~g45hi6 → a*b*cde*~g4*hi6 순서: 일반 String연산이 아니라 StringBuilder를 사용하여 메모리 할당을 최소화 for문에서 charAt으로 문자를 하나씩 가져와서 두번째 문자 그리고 그 문자가 숫자일 경우 *을 대신 삽입 아닐 경우 본래의 문자열 삽입 출력문: a*b*cde*~g4*hi6 public class EvenNChange { public static void main(String[] args) { StringBuilder result = new StringBuilder(); String ex = "a1b2cd..
Object 클래스 모든 클래스의 최고 조상 - 오직 11개의 메서드만 가지고 있음 1. equals() 객체 자신(this)과 주어진 객체의 주소를 비교, 따라서 아래의 코드는 false가 출력된다 public static void main(String[] args) { test t = new test(0); test t2 = new test(0); System.out.println(t.equals(t2)); //this t 를 object t2랑 비교하는 것이기 때문에 객체의 주소가 다르므로 false } } class test{ int i; public test(int i) { this.i = i; } } 위의 값을 true로 바꾸기 위하여 overriding을 해줘야하는데 아래와 같이 실행할 수 ..
StringTokenizer 구분자를 제외하고 변수의 data를 읽어오는 기능을 포함하는 메서드 메서드를 선언하고 () 안에 읽어올 데이터 변수와 구분자를 ""로 선언해주면 그 구분자를 제외하고 출력시켜준다. 읽어올 데이터가 있으면 true를 반환하고 더이상 꺼내올 데이터가 없으면 false를 반환한다. 따라서 while문을 사용하여 데이터를 꺼내오는 것이 적합하다. 데이터를 읽어올 때 nextToken을 사용하여 데이터를 읽어올 수 있다. public static void main(String[] args) { String data = "11:22:33:44:55"; StringTokenizer st = new StringTokenizer(data, ":"); //:를 기준으로 데이터가 있느냐를 파악하..
숫자게임 반복 숫자가 나오지 않을 경우 try - catch로 게임을 재시작하도록 만드는 프로그램 아래의 코드처럼 do-while을 사용하였고 Scanner 함수를 사용하여 일반적인 숫자입력게임을 만들었다. 차이점(애먹었던 점) Scanner 클래스를 try문안에 써주어야 정상작동된다. 새로운 Scanner의 메모리가 할당되고 생성자를 통해 전에 넣어주었던 값을 초기화를 시켜야 무한반복을 막아준다. catch구문에는 오류가 날 경우 출력하고 싶은 문구를 적고 continue를 써주면 반복문이 다시 반복된다. public static void main(String[] args) { Random r = new Random(); int ran = r.nextInt(100)+1; System.out.printl..
다음 입사문제 - 두 점의 차이가 제일 적은 두개의 점 출력 문제: 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.) 예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다. 순서: 최초의 배열 뺀 값을 변수(prevtmp)에 저장하고 새로운 값(tmp)을 받아서 계속 연산하여 prevtmp랑 비교 만약 새 값(tmp)이 저장변수(prevtmp)보다 작다면 값을 대입하여 result 값에 저장 만약 더 작은값이 있다면 prevtmp값에 값을 새로 저장함으로써 그 작은값으로 연산을 함 연산 값이 prevtmp 보다 크다면 연산을 하지 않으므로(else가 없음)..
static을 붙이는 메서드 메서드에 static이 붙는 경우는 어떤 불변의 기능을 언제든지 실행시켜야 할 때 static이 붙는다. 예를 들어 원의 둘레를 구하는 메서드를 구현한다고 하면, 이 경우는 static이 붙여져서 선언된다. 이유: 어느 전 국가에서나 통용되는 범용적인 공식이기 때문에 static을 붙여서 선언한다. 위처럼 메서드의 기능을 잘 생각해서 static을 붙일지 말지 결정하여 메서드를 선언한다. 아래에는 static이 붙은 메서드에 일반 멤버변수가 들어간 경우이다. 이 때 static 메서드과 멤버변수는 이미 메모리가 할당되어 객체 호출없이 static 멤버변수를 사용 가능하지만 일반 멤버변수는 메모리 할당이 되어있지 않기 때문에 사용이 불가능하다. 따라서 메서드안에 객체를 호출해줘..
절대경로 절대경로란 최초의 시작점으로 부터 경유한 경로를 전부 기입하는 방식 기입 방식은 아래와 같다 C:\Users\UserID\Desktop\test.txt 상대경로 상대적인 경로 즉, 절대경로의 주소를 참조하여 상대경로를 절대경로로 바꾸어 전달 상대경로 이름: test.txt 절대경로 = C:\Users\UserID\Desktop\test.txt 참조되어 만들어진 상대경로 = C:\Users\UserID\workspace\Test\src\test.txt File 문법 getPath() : File에 입력된 경로 리턴 getAbsolutePath() : File에 입력된 절대 경로 리턴 (파일명을 입력하면 그 파일명에 맞는 경로 리턴) getCanonicalPath() : 동일하게 File에 입력된 ..
1부터 10,000까지 8이라는 숫자가 총 몇번 나오는지 카운트 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. (※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함) 총 2가지 방법으로 문제 해결 package CodingTestLv2; public class Number8Counting { //1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가? //8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. //(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함) public static void main(String[] args) { counting('8'); for(int i = ..