본문 바로가기

TIL

[TIL] 23년 12월 22일 - 2일차 - Git과 추가 기능

 

2일차 공부 일지


 

9시~10시 알고리즘 코드카타(프로그래머스)를 하며 연습하였다.

오늘은 1(두 수의 차)~8(각도기)까지 완료하면서 오전 코딩 연습을 마쳤다.

 

1. 두 수의 차

정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

  • -50000 ≤ num1 ≤ 50000
  • -50000 ≤ num2 ≤ 50000
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if(num1 >= -50000 && num1 <= 50000 && num2 >= -50000 && num2 <= 50000)
        {
            answer = num1 - num2;
        }
        return answer;
    }
}

 

단순한 사칙연산 위주 코딩이지만 이전에 사용해본 적 없는 &&를 알게 되어 if문을 처음 쓴 것들 보다 깔끔하게 줄일 수 있었다.

 

2.  두 수의 곱

정수 num1num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

  • 0 ≤ num1 ≤ 100
  • 0 ≤ num2 ≤ 100
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if (0<=num1 && num1<=100 && 0<=num2 && num2<=100);
        {
            answer = num1*num2;
        }
        return answer;
    }
}

 

3. 몫 구하기

정수 num1num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if(0<num1 && num1<=100 && 0<num2 && num2<=100);
        {
            answer = num1/num2;
        }
        return answer;
    }
}

 

4. 나이 출력하기

머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

  • 0 < age ≤ 120
  • 나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다.
using System;

public class Solution {
    public int solution(int age) {
        int answer = 0;
        if(0<age && age<=120);
        {
            answer = 2022 - age+1;
        }
        return answer;
    }
}

 

5. 숫자 비교하기

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

  • 0 ≤ num1 ≤ 10,000
  • 0 ≤ num2 ≤ 10,000
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if(num1>=0 && num1<=10000 && num2>=0 && num2<=10000);
        {
            if(num1==num2)
            {
                answer = 1;
            }
            else
            {
                answer = -1;
            }
        }
        return answer;
    }
}

 

6. 두 수의 합

정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.

  • -50,000 ≤ num1 ≤ 50,000
  • -50,000 ≤ num2 ≤ 50,000
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = -1;
        if(num1>=-50000 && num1<=50000 && num2>=-50000 && num2<=50000)
        {
            answer = num1+num2;
        }
        return answer;
    }
}

 

7. 두 수의 나눗셈

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100
using System;

public class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        float temp = 0;
        float temp2 = 0;
        if(num1>0 && num1<=100 && num2>0 && num2<=100)
        {
            temp= (float)num1/(float)num2;
            temp2= temp*1000;
            answer = (int)temp2;
        }
        return answer;
    }
}

 

(float) (int)와 같이 중간중간 자료형을 바꾸는 것도 처음엔 익숙치 않았다.

 

8. 각도기

 

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180
using System;

public class Solution {
    public int solution(int angle) {
        int answer = 0;
        if(angle>0 && angle<90)
        {
            answer = 1;
        }
        else if(angle==90)
        {
            answer = 2;
        }
        else if(angle>90 && angle<180)
        {
            answer = 3;
        }
        else if(angle==180)
        {
            answer = 4;
        }
        return answer;
    }
}

 

단순하게 생각하여 풀었으나 각도기 문제에서 이렇게 많이 else if를 사용할 필요가 없지 않을까 하여 다른 방법을 찾아보았고 아니나 다를까

using System;

public class Solution {
    public int solution(int angle) {
        int answer = angle < 90 ? 1 : angle == 90 ? 2 : angle < 180 ? 3 : 4;
        return answer;
    }
}

 

이처럼 깔끔하게 정리하는 방법도 있었다. '?' = Nullable 을 이전까지 몰랐는데 좋은 걸 배웠다.

//다음에는 코드카타 부분은 접은글로 깔끔하게 정리할 수 있도록 해둬야 할 것 같다.

//알고보니 이건 알고리즘 특강 이후에 하는 거였다니!


 

10~11시 Git 강의 이후 팀 회의를 하기로 하여 그전까지 C#에서 ?와 같이 모르는 기능들이 많았다고 생각하여 이것저것 정보를 찾아보며 공부하는 시간을 가졌다

 

11~13시 Git 강의 시청

 

13~14시 점심식사

 

14~18시 역할 분담 회의 & 깃허브 연동해서 추가 기능 구현 시작

기본 기능에 사운드 추가 완료

더보기

게임매니저 - 오디오 소스

   >시작 시 카드 셔플 소리

   >매치 성공 / 실패 소리

 

오디오매니저 생성

   >BGM - 노멀 난이도 기준 적용

 

엔드 택스트 - 오디오 소스

   >게임오버 사운드

18~19시 저녁식사

 

19~21시 서로 작업물 머지 & 매칭 시 이름 및 실패 출력 구현 시작

실패까지는 구현, 매칭 시 카드를 인식하여 텍스트를 이름으로 변형하여 출력할 방법 필요

 

더보기

사운드 추가로 

 

게임 매니저 변경점

@ -15,6 +15,10 @@ public class gameManager : MonoBehaviour
    public static gameManager I;
    public GameObject firstCard;
    public GameObject secondCard;
    public AudioSource audioSource;
    public AudioClip match;
    public AudioClip wrong;
    public AudioClip shuffle;


    void Awake()
@ -26,6 +30,7 @@ public class gameManager : MonoBehaviour
    void Start()
    {
        Time.timeScale = 1.0f;
        audioSource.PlayOneShot(shuffle);

        int[] images = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14 };

@ -65,6 +70,7 @@ public class gameManager : MonoBehaviour

        if (firstCardImage == secondCardImage)
        {
            audioSource.PlayOneShot(match);
            firstCard.GetComponent<card>().destroyCard();
            secondCard.GetComponent<card>().destroyCard();

@ -77,6 +83,7 @@ public class gameManager : MonoBehaviour
        }
        else
        {
            audioSource.PlayOneShot(wrong);
            firstCard.GetComponent<card>().closeCard();
            secondCard.GetComponent<card>().closeCard();
        }

 

오디오 매니저

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class audioManager : MonoBehaviour
{
    public AudioSource audioSource;
    public AudioClip bgmusic;
    
    private void Start()
    {
        audioSource.clip = bgmusic;
        audioSource.Play();
    }
}

https://github.com/SeRDic0705/NBC_8_findRtan/tree/Junha

 

*현재 매칭 성공 텍스트가 사라지기 전에 실패를 발동하면 성공 텍스트가 사라지지 않는 버그 발견

 


 

오늘 작업하며 코드를 깔끔하게 쓰는 법에 대해 알고싶어 졌고

확실히 주어진 강의자료를 통해 하던 것에서 새로운 기능을 구현하려니 처음엔 머리가 아프다.

하지만 깃허브를 통해 서로의 작업물이 하나로 구현되는 모습을 보니 점점 뿌듯하다