ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.1.15
    TIL 2024. 1. 15. 21:19

    언젠간 지각을 할 수도 있겠다 생각했지만.. 이게 오늘이 될줄 몰랐네요..

    그래서 매니저님의 전화를 받고 일어나.. 코드카타에 늦어버렸습니다 ㅠㅠ

    최대한 빠르게 정신을 차리고 코드카타를 했습니다.


     

    x만큼 간격이 있는 n개의 숫자

     

    public long[] solution(int x, int n) {
            int sum = 0;
            long[] answer = new long[n];
            for(int i = 0; i < n; i++)
            {
                sum += x;
                answer[i] = sum;
            }
                return answer;
        }

    이렇게 하면 될 줄 알았다고.. 해결했다 생각했는데 길이가 짧으면 가능한 코드였습니다.

    그렇다면 문제가 무엇이였을까요?

    왜 함수는 long을 반환하게 되어있을까요?

    네.. 반환 타입 long에 주목을 했어야합니다.

     

    public long[] solution(int x, int n) {
            long[] answer = new long[n];
            for(int i = 0; i < n; i++)
            {
                answer[i] = (long)x*(i+1);
            }
                return answer;
        }

    int와 long은 당연히 다릅니다. 그렇기 때문에 int를 long으로 바꿔줘야합니다.

     


     

    자연수를 뒤집어 배열로 만들기

     

    public int[] solution(long n) {
            int count = 0;
            long number = n;
            while (n != 0){
                n = n/10;
                count ++;
            }
            int[] answer = new int[count];
            for(int i = 0; i < count; i++){
                answer[i] = (int)(number%10);
                number = number/10;
            }
            
            return answer;
        }

     

    배열을 만들 때에는 배열의 크기를 지정해주는 것이 필요합니다.

    그래서 count를 이용해서 숫자의 길이를 구해줬습니다.

    count를 해줄 때 n /= 10을 하므로 원래 받은 값이 변화하게 됩니다. 이 값을 이용해서 %를 사용하게 되면 첫번째 숫자만 나오기 때문에 새로운 변수를 이용해서 원래의 값을 유지시켜주었습니다.

    그렇게 생각대로 진행되었는데 몇 개의 케이스에서 에러가뜨더라구요.

     

    이유는 answer[ i ] = (int)number%10에 있었습니다.

    (int)(number%10)을 해줘야 된다고 하네요.

    (int) number을 해주면 int%int라 될거라 생각했는데 그게 아니였나봅니다. 

    무슨 케이스에서 실패했는지 케이스를 보여주는 것이 아니기 때문에 궁금하네요.

     

    다른 사람들 풀이 중에서

    n.ToString().ToCharArray().Reverse()

    를 이용한 풀이들이 많았습니다.

     

    int를 string으로 바꾼다음 1글자씩 나눠서 배열로 만든 뒤, 순서를 뒤집는다는 의미입니다.

    이렇게하면 while문을 이용한 길이 확인이 필요없습니다. Length를 이용해서 간단하게 확인할 수 있으니깐요.

    대신 int를 string으로 바꿨기 때문에 string[]을 새로 만들어서 사용해줘야합니다.

     


     

    정수 제곱근 판별

     

    저는 while, for, if문을 참 좋아하는 것 같습니다.

    이번에는 while을 이용해서 계산해주었습니다.

    long을 반환하는 것이기 때문에 long i로 설정해주고 if문을 이용해서 i * i일 때와 아닐 때 return값의 변화를 주었습니다.

    이렇게 할 경우 사실.. 작은 수는 괜찮지만 큰 수일 경우 시행횟수가 많아지면서 불필요한 시행이 생기게 됩니다.

    하지만 그렇다고 시행횟수를 임의로 줄이게 되면 작은 수에 대한 값이 정확하게 나오지 않을 수 있기 때문에 그냥 큰수일지라도 실행하도록 설정해주었습니다.

     

    해결은 했으니 다른 사람들의 풀이를 보고 무엇이 부족했는지 생각해보려 했습니다.

    역시 함수를 사용하는 것이 참 부족했습니다.

    Math.Sqrt();

    숫자에 루트를 씌워주는 함수입니다.

     

    여기서 나온 값의 곱이 입력된 값과 같다면 계산한 값을 return하고 아니라면 다른 값을 return하도록 하는 것입니다.

    뿐만 아니라

    함수를 이용해서 나온 값을 %1.0해주어서 나머지가 없다면 제곱근이고, 나머지가 있다면 제곱근이 아니므로 지정해준 값을 return해주면 됩니다. 이건 좀 새롭게 보이는 방법이였습니다.


     

    구현을 할게 딱히 없어서 Read Me를 작성해보았습니다.

    Read Me 작성을 할 때 쓸만한 것들을 정리해보려고 합니다.

     

    1. 주석

    <!-- 주석처리되는 부분 -->

    주석을 해야할 부분이 여러줄일 경우

    <!--

    주석되는 부분

    -->

     

    2. 글자 크기 조절

    글자 앞에 #를 입력하고 띄어쓰기를 꼭 추가해서 사용해주면 된다.

    # 갯수가 많을 수록 글자의 크기는 작아진다.

    #가 1~2개일 경우 글자 밑에 얇은 줄이 생긴다.

     

    3. 글자 굵게 만들기

    원하는 글자 앞, 뒤로 ** 또는 __를 입력해준다.

    스페이스바는 없어도 된다.

     

    4. 구분선 생성

    큰 글자 밑에는 줄이 생기지만 위에는 줄이 없기 때문에 구분을 해주기 위해 선을 만들어주기 위해서

    - 또는 *를 3개 이상 적어준다.

    3개 이상 연속으로 적고 띄어쓰기를 해도 구분선이 생긴다.

     

    5. 리스트 생성

    앞에 숫자가 필요하다면 그대로 번호를 입력해주거나 같은 숫자를 입력해도 제대로 부여된다.

    숫자가 필요 없다면 '- '를 앞에 적어준다. 단, ●이 앞에 생성되어서 수정이 불가하다.

     

    6. Read Me 내 이동 링크

    [표시될 내용](#이동할 곳 이름)

    이동할 곳 이름은 #을 이용해서 제목으로 설정한 곳 가능

    만약 제목에 띄어쓰기가 있다면 띄어쓰기 부분은 '-'를 넣어줘야한다.

     

    7. 아이콘 또는 명찰 만들기

    ![표시할이름](https://img.shields.io/badge/표시할이름-색상?style=for-the-badge&logo=기술스택아이콘&logoColor=white)

     

    앞으로 자주 사용할 것 같은 아이콘

    ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)
    ![Visual Studio](https://img.shields.io/badge/visual%20studio-9B4DE3?style=for-the-badge&logo=visual%20studio&logoColor=white)

    ![Unity](https://img.shields.io/badge/Unity-000000?style=for-the-badge&logo=unity&logoColor=white)

     


     

    Read Me를 처음 작성해봐서 여러가지 해보고 싶어서 열심히 찾아봤습니다..

    제목 앞에 이미지 넣는 것도 하고 싶은데 알맞는 이미지를 찾기 힘드네용..

    'TIL' 카테고리의 다른 글

    2024.1.17  (0) 2024.01.17
    2024.1.16  (0) 2024.01.16
    2024.1.12  (2) 2024.01.12
    2024.1.11  (1) 2024.01.11
    2024.1.10  (1) 2024.01.10
Designed by Tistory.