상세 컨텐츠

본문 제목

프로그래머 도전기 22일차

프로그래머가 될거야!

by Choyee 2023. 9. 19. 23:54

본문

오늘은

오늘은 화요일입니다

그리고 22일차가 되는 날입니다

학원을 가서 수업을 받은지는 11일차가 되었습니다

그리고.. 코딩이 너무 재밌어졌습니다~!! 하하하

학원에서 수업 중간중간에 내주는 테스트도

곧잘 따라서 하고 있고

코딩 테스트도 물론 완전 기초적인 것이지만

옳바른 식을 쓰는데에 어려움이 있긴 해도 구상했던 내용과 큰 틀은 같아서

조금씩 자신감을 얻어가고 있습니다

이대로만 순탄하게 쭈욱 성장해서 좋은 결과가 있었으면 좋겠습니다

 

JAVA 수업

<객체 지향 언어>

* 추상 클래스 - 상속관계(다형성), 참조관계, 협력관계
  abstract 부모(상위) 클래스
   - 추상 메서드 : abstract method(); = 구현부가 없고 선언부만 있음
   - 구체 메서드

* 자료구조 (데이터 관리 - CRUD, 메모리) -> SQL언어(DB언어)
  데이터 생성(Create)
  조회(읽기-Read)
  수정(Update)
  삭제(Delete)
  배열 -> ArrayList<E>()

* 템플릿 - 정형화된 패턴, 틀
  템플릿 메서드 - 전체 기능의 흐름(시나리오) 정의
  - final drive( ){    // final을 붙이면 메서드 수정 불가
            start(), run(), stop(), turnoff()
     }

01

* 협력관계 -> 상속관계(다형성)
  교통 수단 이용하기


* 배열 < - > ArrayList<>

Subject[] subject = new Subject[3];
ArrayList<Subject>  subjectList = new ArrayList<>();

List<String> list = new List<>()
List<integer>
List<subject>

01

* 인터페이스(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 클래스에서 사용

0123

문자열 - 1차원 배열
apple
912121 - 1212121

String 클래스
charAt() - 인덱스의 문자를 리턴함
indexOf() - 특정 요소가 문자열에 있는지 없는지 확인
subString() - 몇번 인덱스부터 문자 추출
concat() - 문자 연결 메서드 
append()사용 - 문자열 추가, 연결

StringBuilder, StringBuffer - 문자열 변경이 가능한 클래스(메모리 주소 변경되지 않고 유지)
String -> StringBuilder, StringBuffer = 문자열 연결에 사용 - 같은 주소 사용

0123

코딩 테스트
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 (화)

관련글 더보기