카테고리 없음

[부트캠프] TIL 22일차(10/24)

hahahabbb 2024. 10. 24. 21:04

1. 학습 목표

 1) 숫자 야구 필수 기능 구현

 2) 알고리즘 프로그래머스 1문제, 백준 2문제 풀이

 

2. 학습 내용

 1) 실습 환경 : IntelliJ, VSCode

 2) 학습 진행 내용 : 숫자 야구 구현 ( LV1,2 진행 ) - 랜덤 값 설정, 동일 값 예외처리, 스트라이크/볼/아웃 구현, 반복, 출력, 예외처리 등

이전에 클래스 분리 없이 main에 작성한 것을 참고하여 진행하였습니다. 숫자 야구는 '[CH3.개인과제]숫자야구'에 따로 작성하였습니다. 

 3) 알고리즘 진행 중 이슈 내용 : 

(1) 프로그래머스 - 22. 두 정수 사이의 합

등차수열 공식 : n * (a + l)/2 적용. 

//기존 코드 - 이것도 통과는 됨
class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        int tmp;
        if (a > b) {
            tmp = a;
            a = b;
            b = tmp;
        }
        for (int i=0;i<(b-a)+1;i++){
            answer += a+i;
        }
        return answer;
    }
}
//수정
class Solution {
    public long solution(int a, int b) {
        int tmp;
        if (a > b) {tmp = a; a = b; b = tmp;}
        return sum(a,b);
    }
    private long sum(long a, long b){
        return (b - a + 1)*(a + b)/2;
    }
}

 (2) 백준 - 5597. 과제 안 내신 분 ..?

기존에는 리스트에 1~30까지 넣고 입력받은 값들을 리스트에서 제거하는 방식으로 진행. c++은 다른 사람의 풀이를 찾아보고 보다 간단한 방식을 적용해서 풀이해보았습니다.

//기존 코드
import java.util.Scanner;
import java.util.ArrayList;

public class Main {
    private static final int TOTAL = 30;
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        int n;
        for (int i=0;i<TOTAL;i++){
            list.add(i+1);
        }
        for (int j=0;j<TOTAL-2;j++){
            n = sc.nextInt();
            if (list.contains(n)) list.remove(Integer.valueOf(n));
        }
        for (int l : list){
            System.out.println(l);
        }
    }
}
// C++로 구현 시에는 새로운 방식 적용
#include <iostream>
using namespace std;

int main(){
    int inputArray[31] = {0,};
    int input;
    for (int i=0;i<28;i++){
        cin >> input;
        inputArray[input] = 1;
    }
    for (int j=1;j<=30;j++){
        if (!inputArray[j]) cout << j << '\n';
    }
    return 0;
}

3. 다음 학습 내용

1) 개인 과제 숫자 야구 마무리

2) 나무반 디버깅 수업

3) 과제 진행하면서 이해 안 됐던 부분 공부

 

4. 회고

숫자 야구 과제 시간이 생각보다 빠듯해서 과제를 제대로 제출할 수 있을지 걱정이다. 필수 기능이라도 제대로 구현하는 게 목표..!