본문 바로가기
웃음기 있는 글들/n일차

8일차

by pon9 2024. 11. 11.

오전1: 알고리즘 한문제

수능 국어 비문학 푸는 줄 알았다. 문제 자체는 단순구현이라 쉬워보였다

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

// survey_len은 배열 survey의 길이입니다.
// choices_len은 배열 choices의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* survey[], size_t survey_len, int choices[], size_t choices_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer = (char*)malloc(5);
    int scores[8] = {0};
    const char* mbti = "RTCFJMAN";
    answer[4] = '\0';
    
    for(int i = 0; i < survey_len; i++){
        int score = choices[i] - 4;
        if(score > 0){
            for(int j = 0; j < 8; j++){
                if(mbti[j] == survey[i][1]){
                    scores[j] += score;
                    break;
                }
            }
        } 
        else if(score < 0){
            for(int j = 0; j < 8; j++){
                if(mbti[j] == survey[i][0]){
                    scores[j] -= score;
                    break;
                }
            }
        }
    }
    
    for(int i = 0; i < 4; i++){
        answer[i] = scores[i * 2] >= scores[i * 2 + 1] ? mbti[i * 2] : mbti[i * 2 + 1];
    }

    return answer;
}

처음엔 switch case를 써서 하나 하나 노가다를 했는데

하다 보니까 현타오고 더 쉬운 방법이 없을까 고민하다가 4를 빼면 점수의 절댓값이 나온다는 걸 알아챘다.

그래서 쉽게 풀 수 있었다.

다른 사람들 풀이가 궁금해서 찾아보니까 이런 풀이도 있었다.. 진짜 상남자다

이제 백준에서 알고리즘 종류별로 좀 공부를 해야겠다. 슬슬.. 단순구현이나 수학이 아닌 문제들이 많이 보인다ㅠㅠ.

근데 요즘 공부할 게 너무 많아서 정신이 없다 ㅋㅋㅋㅋ 재밌는 게 너무 많은걸!

 

 

오전2-오후1: JAVA 강의 수강 (3주차 까지)

java는 아무래도 고급 언어라 그런가, 남이 쓴 코드를 보고 해석하긴 쉬운데 내가 좋은 구조를 짜기가 참 어렵다. 강의도 한번만 봐서는 개념이 다 와닿지가 않는다. 그동안 야매로 썼던 코드들이 부끄러워진다.. 정리하고 내 코드에 적용하는 시간까지 다 마쳐야 감을 잡을 수 있을 것 같다.

 

3주차 숙제 : 계산기 만들기

처음엔 쫄았는데 찬찬히 읽어 보니까 생각보단 할 만(?) 했다. 인텔리제이가 자동으로 코드를 완성시켜준다;; 여태 써 본 프로그램 중에 제일 편하다. 클래스를 이상한 곳에 생성하면 파일도 만들어준다. github이랑 연동도 되고 오류도 바로바로 잡아주고 굳굳

 

처음에 sout이랑 입력값만 받으니까 사용자가 이상하게 입력 시 불편한 에러가 떠서 예외 처리랑 인풋미스매치 어쩌고를 넣어줬다.

넣으니까 임포트도 인텔리제이가 지맘대로 해줬다.흥.. 나도 쓰고싶은데

try catch등의 예외 처리는 4주차에서 배우는 것 같다.

이거도 얘가 써준거다. 난 그냥 sout "에러떳슴다" 할랬는데 탭 누르면 그냥 완성되길래 했다

 

위에 것들은 Main이고 이건 생성자 부분. 우선 추상 클래스 Abs-에서 연산 객체들을 받아와서 초기화시켜준다.

setter를 사용하는 방법도 있는데 난 그냥 생성자로 했다.

연산 개체들이 Cal- 클래스에 주입되고 이를 통해 특정 연산을 수행할 수 있다.(의존성 주입)

Main에서 클래스에서 calculate 메서드를 통해 operator, first, second를 받아서

operator에 따라서 operate메서드를 호출하여 first, second로 연산을 수행한다

 

추상 클래스(Abs-) 는 생략

 

이건 Abs-를 상속받은 Div-클래스다. operate를 상속받아서 나눗셈을 해준다.

메서드 오버라이딩을 통해 구현된 다형성이다.

0으로 나누면 결과가 에러가 뜨니깐 나눗셈에만 예외 처리를 해줬다. 다른 연산 클래스들도 이것과 똑같이 만들어줬다.

 

 

저녁: JAVA 용어정리 2

https://roqkfchqh.tistory.com/41

 

JAVA - 용어 정리<2>

1. 매개변수의 종류 -기본형 매개변수(값에 의한 전달): 기본 데이터 타입(int, double, boolean 등)에서 값을 복사하여 메서드에 전달한다. 메서드 내에서 매개변수 값을 변경해도 원본 값엔 영향이

roqkfchqh.tistory.com

게임 만드는 거 class 좀 나누고 이것 저것 추가하다가 자야겠다.

'웃음기 있는 글들 > n일차' 카테고리의 다른 글

9일차  (0) 2024.11.12
6일차  (2) 2024.11.09
5일차  (1) 2024.11.08