자바
[JAVA] Level.1 - 나머지가 1이 되는 수 찾기
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한 사항 3≤n≤1,000,000 입출력 예 n result 10 3 12 11 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. 나의 풀이 class Solution { public..
[JAVA] Level.1 - 약수의 개수와 덧셈
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ left ≤ right ≤ 1,000 입출력 예 left right result 13 17 43 24 27 52 입출력 예 설명 입출력 예 #1 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다. 수 약수 약수의 개수 13 1,13 2 14 1,2,7,14 4 15 1,3,5,15 4 16 1,2,4,8,16 5 17 1,17 2 따라서, 13 + 14 + 15 - 16 + 17 = 43을 ..
[JAVA] Level.1 - 숫자 문자열과 영단어
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요 제한사항 1 ≤ s의 길이 ≤ 50 s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다 return ..
[JAVA] Level.1 - 이상한 문자 만들기
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다 입출력 예 s return "try hello world" "TrY HeLIO WoRID" 입출력 예 설명 "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 ..
[JAVA] Level.1 - 내적
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한 사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 입출력 예 a b result [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 입출력 예 설명 입출력 예 #1 a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다. 입출력 예 #2 a와 b의 ..
[JAVA] 예외 처리
에러(오류) 종류 시스템 에러: 컴퓨터의 오작동으로 인해 발생하는 에러 ⇒ 소스코드로 해결이 안됨( 가장 심각한 에러) 컴파일 에러: 소스코드상의 문법적인 문제로 발생하는 에러 ⇒ 소스코드 수정으로 문제 해결 가능(빨간 밑줄로 알려줌) 런타임 에러: 소스코드 상으로는 문제가 없는데 프로그램 실행 중 발생하는 에러 ⇒ 사용자의 잘못일 수도 있고, 개발자가 예측 가능한 경우를 제대로 처리 안해놓은 것 일수도 있음 논리 에러: 소스코드 상의 문법적인 문제도 없고(빨간 밑줄이 없다), 실행했을 때도 굳이 문제가 되지 않지만 프로그램 의도상 맞지 않는 오류 ⇒ 예를 들면 true 값이 들어가야 하는데 false가 들어가서 내 의도와 정반대로 실행되는 경우 시스템 에러를 제외한 컴파일 에러, 런타임 에러, 논리 에..
[JAVA] 인터페이스
[인터페이스] 상수 필드(static final)와 추상 메소드(abstract)들로만 이루어진 추상클래스의 변형체(종특) 표현법 접근제한자 interface 인터페이스명{ //필드부=> 상수 필드만 작성(static final) /*public static final*/ int NUM=10; //인터페이스에는 상수 필드만 정의할 수 있기 때문에 애초에 앞의 public static final은 생략 가능하다 //메소드부=> 추상 메소드만 작성(abstract) /*public abstact*/ void eat(); void sleep(); //인터페이스에는 추상메소드만 정의할 수 있기 때문에 애초에 앞의 public abstract는 생략 가능하다 } 특징 인터페이스에서 필드는 무조건 “상수 필드”로 ..
[JAVA] 추상클래스
추상클래스 미완성된 클래스 추상클래스 특징 추상메소드가 존재하는 순간 반드시 추상클래스로 정의된다 단, 추상메소드가 없어도 클래스명 앞에 abstract를 붙이면 추상클래스로 만들 수 있다 객체 생성이 불가능하다(단, 참조형 변수로써 자식 객체를 담을 때는 사용 가능하다)⇒다형성 적용 추상클래스가 필요한 때 자식 클래스들에게 일정한 규칙을 부여하고 싶을 때 쓰면 좋다 클래스가 아직 구체적이지 않고 구현이 완벽한 상태가 아닐 때(개념적으로) 현재 이 클래스에 대한 객체 생성을 애초에 막고싶을 때(기술적으로) 추상메소드 미완성된 메소드로 몸통부 { }가 구현되어있지 않은 메소드 추상메소드 특징 자식클래스에서 오버라이딩을 통해 완성되는 메소드(강제로 오버라이딩을 해야한다) 오버라이딩을 안했을 경우 에러 발생 ..
[JAVA] 상속
상속 매 클래스마다 중복된 필드, 메소드들을 하나의 클래스(부모)로 정의해둔 후에 다른 클래스(자식)에서 해당 부모 클래스의 내용들을 가져다 쓰는 개념 상속의 장점 보다 적은 양의 코드로 새로운 클래스들을 관리 가능하다 중복된 코드를 부모 클래스에서 공통적으로 관리하기 때문에 새로운 코드를 추가하거나, 기존의 코드를 수정하는데에 용이하다 프로그램의 생산성을 높여준다. 유지보수에도 크게 기여한다 상속의 특징 클래스간의 상속은 다중 상속이 불가능하다(단일 상속만 가능) 명시되어있지는 않지만 자바에서 제공하는, 또는 내가 만든 모든 클래스는 Object라는 클래스의 후손이다 Object 클래스에 있는 메소드를 그대로 가져다 쓸 수 있음 Object 클래스에 있는 메소드가 맘에 안든다면 내 입맛대로 오버라이딩해..
[JAVA] getter와 setter
객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있기 때문이다 이런 문제점을 해결하기 위해 데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다 이러한 역할을 하는 메소드는 Setter이다 외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋다 이러한 역할을 하는 메소드는 Getter이다 클래스를 선언할 때 가능하다면 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋다 private 데이터타입 name; //Ge..