오늘은
오늘은 화요일입니다
그리고 22일차가 되는 날입니다
학원을 가서 수업을 받은지는 11일차가 되었습니다
그리고.. 코딩이 너무 재밌어졌습니다~!! 하하하
학원에서 수업 중간중간에 내주는 테스트도
곧잘 따라서 하고 있고
코딩 테스트도 물론 완전 기초적인 것이지만
옳바른 식을 쓰는데에 어려움이 있긴 해도 구상했던 내용과 큰 틀은 같아서
조금씩 자신감을 얻어가고 있습니다
이대로만 순탄하게 쭈욱 성장해서 좋은 결과가 있었으면 좋겠습니다
JAVA 수업
<객체 지향 언어>
* 추상 클래스 - 상속관계(다형성), 참조관계, 협력관계
abstract 부모(상위) 클래스
- 추상 메서드 : abstract method(); = 구현부가 없고 선언부만 있음
- 구체 메서드
* 자료구조 (데이터 관리 - CRUD, 메모리) -> SQL언어(DB언어)
데이터 생성(Create)
조회(읽기-Read)
수정(Update)
삭제(Delete)
배열 -> ArrayList<E>()
* 템플릿 - 정형화된 패턴, 틀
템플릿 메서드 - 전체 기능의 흐름(시나리오) 정의
- final drive( ){ // final을 붙이면 메서드 수정 불가
start(), run(), stop(), turnoff()
}
* 협력관계 -> 상속관계(다형성)
교통 수단 이용하기
* 배열 < - > ArrayList<>
Subject[] subject = new Subject[3];
ArrayList<Subject> subjectList = new ArrayList<>();
List<String> list = new List<>()
List<integer>
List<subject>
* 인터페이스(interface)
클래스, 프로그램이 제공하는 기능을 선언하는 역할
= 전부 추상 메서드
= 상속 관계 아니다
implements 구현하다
-> interface 인터페이스이름{
상수 이름 = 값;
메서드 이름(매개변수,...)
}
ex) 계산기
int add(int num1, int num2);
int sub(int num1, int num2);
구현 클래스(class)
int add(int a, int b){
return a+b
}
interface에서 선언 -> 구현 클래스에서 구현 -> Main 클래스에서 사용
문자열 - 1차원 배열
apple
912121 - 1212121
String 클래스
charAt() - 인덱스의 문자를 리턴함
indexOf() - 특정 요소가 문자열에 있는지 없는지 확인
subString() - 몇번 인덱스부터 문자 추출
concat() - 문자 연결 메서드
append()사용 - 문자열 추가, 연결
StringBuilder, StringBuffer - 문자열 변경이 가능한 클래스(메모리 주소 변경되지 않고 유지)
String -> StringBuilder, StringBuffer = 문자열 연결에 사용 - 같은 주소 사용
코딩 테스트
Description 문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
class Solution {
public String solution(String my_string, int k) {
String answer = my_string.repeat(k);
return answer;
}
}
repeat문을 사용해서 배열을 반복시키면 해결할 수 있습니다
-> 배열이름.repeat();
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
class Solution {
public int solution(int a, int b) {
int answer;
String AB = Integer.toString(a) + Integer.toString(b);
String BA = Integer.toString(b) + Integer.toString(a);
if(Integer.parseInt(AB) > Integer.parseInt(BA)){
answer = Integer.parseInt(AB);
}else if(Integer.parseInt(BA) > Integer.parseInt(AB)){
answer = Integer.parseInt(BA);
}else{
answer = Integer.parseInt(AB);
}
return answer;
}
}
Integer.toString() 메소드 사용 -> int를 문자열로 바꿈
String str1 = Integer.toString(a);
String str2 = Integer.toString(b);
Integer.parseInt() 메소드 사용 -> 문자열을 int로 바꿈
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
이 두가지 함수를 이용해서 int 를 문자열로 바꾸어 비교를 하고 다시 int로 값을 반환했습니다
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요. 단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
String strAB = Integer.toString(a) + Integer.toString(b);
int AB = Integer.parseInt(strAB);
int mul = (2 * a * b);
if(AB > mul){
answer = AB;
}else if(AB < mul){
answer = mul;
}else{
answer = AB;
}
return answer;
}
}
if else 문을 써서 코드가 굉장히 길어졌는데 찾아보니
math.max() 함수 = ()안의 두 인자 값 중 큰 값을 리턴하는 함수
math.min() 함수 = ()안의 두 인자 값 중 작은 값을 리턴하는 함수
이런 함수들이 있었습니다
잘 기억하고 있다가 다음번에는 이런 math 함수들을 사용해봐야겠습니다
정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int num, int n) {
int answer = 0;
if(num % n == 0){
answer = 1;
}else{
answer = 0;
}
return answer;
}
}
% 연산자를 이용해서 나머지가 0 인 경우에는 n의 배수이기 때문에 1을 반환하도록
if문을 사용하여 풀이하였습니다
* split() 함수는 문자열을 특정구분자로 나눠서 배열로 만들어 줍니다.
join() 배열을 문자열로 합쳐주는 메소드
-> str= String.join("|", arrayStr);
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
class Solution {
public int solution(int n) {
int oddSum = 0;
int evenSum = 0;
for(int i = 1; i <= n; i++){
if(i % 2 != 0){
oddSum += i;
}
if(i % 2 == 0){
evenSum += (i * i);
}
}
return (n % 2 != 0) ? oddSum : evenSum;
}
}
=> continue; 명령어로 수정
* continue 는 반복문의 현재 단계를 중단하고 다음 반복문으로 넘어가는 것이고 break 는 반복문 전체를 중단하는 것
class Solution {
public int solution(int n) {
int oddSum = 0;
int evenSum = 0;
for(int i = 1; i <= n; i++){
if(i % 2 != 0){
oddSum += i;
continue;
}
evenSum += (i * i);
}
return (n % 2 != 0) ? oddSum : evenSum;
}
}
for문과 if문, continue를 사용하여 홀수 조건의 합과 짝수 조건의 합을 구하는 식을 짜준 뒤에
삼항연산자를 사용하여 값을 반환받아 해결하였습니다
2023. 09. 19 (화)
프로그래머 도전기 24일차 (0) | 2023.09.21 |
---|---|
프로그래머 도전기 23일차 (0) | 2023.09.20 |
프로그래머 도전기 21일차 (0) | 2023.09.19 |
프로그래머 도전기 20일차 (0) | 2023.09.17 |
프로그래머 도전기 19일차 (0) | 2023.09.17 |