TIL (since 2023.08.07 ~ )

2023-09-07 TIL (대용량 Github 업로드, 문자열처리)

Bastian바스티언 2023. 9. 7. 20:16

code kata

<핸드폰 번호 가리기>

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때, 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를
전부 * 으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

<제한 조건>
phone_number는 길이 4 이상, 20이하인 문자열입니다.

 

<brainstorming>

처음 문제를 보고 생각보다 간단하겠다는 생각을 했다. 입력받는 숫자의 마지막 4자리는 즉 -4로 표현하고,

 

반복문을 활용해서 나머지 부분을 *로 나타내게 만들면 되겠다 싶어서 코드를 짜보았다.

 

public class Solution 
{
    public string solution(string phone_number) 
    {
        string answer = "";
        for (int i = 0; i < phone_number.Length; i++)
        {
            if (i < phone_number.Length -4)
            {
                answer += "*";
            }
            else 
            {
                answer += phone_number[i];
            }
        }
        return answer;
    }
}

 

<다른 사람의 풀이>

public class Solution {
    public string solution(string phone_number) {
        string answer = phone_number.Substring(phone_number.Length - 4);
        answer = answer.PadLeft(phone_number.Length, '*');
        return answer;
    }
}

다른 사람의 풀이에는 신기한 함수가 적혀있었는데, 바로 PadLeft 라는 함수였다.

 

해당 함수는 string 변수의 앞뒤로 특정 문자를 입력하는 함수인데, 사용법으로는

 

PadLeft("문자를 붙인 후 문자열 전체 길이수" , 문자열 왼쪽에 붙이고 싶은 문자)

 

이런식으로 사용하면 된다고 한다.

 

 

 

<없는 숫자 더하기>

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다.
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

<제한 사항>
- 1 ≤ numbers 의 길이 ≤ 9
- 0 ≤ numbers 의 모든 원소 ≤ 9
- numbers 의 모든 원소는 서로 다릅니다.

 

<brainstorming>

해당 문제도 생각보다 구현하는게 어렵진 않은 듯 했다. 반복문을 사용해서 해당 범위 내에 숫자를 모두 더한 뒤

 

numbers에 들어가 있는 숫자들만큼 빼면 간단하게 해결이 됐다.

using System;

public class Solution {
    public int solution(int[] numbers) {
        int answer = 0;

        for (int i = 0; i <= 9; i++)
        {
            answer += i;
        }

        for (int i = 0; i<numbers.Length; i++)
        {
            answer -= numbers[i];
        }

        return answer;
    }
}

 

문제 해결 후 다른 사람의 풀이를 보았으나 거의 다 Linq를 사용하는 바람에...

 

아직 거기까진 공부하지 않아서 이해가 되지 않으므로  일단은 패스 하도록 하겠다.

 

 


Github

오늘 개인과제를 제출 할 때 Github에 업로드 한 뒤 링크를 제출하는 것이었는데,

 

Github에 푸시하다가 계속해서 에러가 났었다. 그 이유는

 

첫 번째, Git Ignore 설정을 Unity 가 아니라 VisualStudio 로 했기 때문(ㅋㅋㅋㅋㅋㅋㅋ)

 

두 번째, Ignore 파일을 레포지토리에 올리는 폴더가 아니라 그 바깥쪽에 빼놓았기 때문

 

그래서 레포지토리에 푸시할 때 library 부분도 함께 올라가느라 용량이 어마무시하게 올라간 것이었다.

 

Github 에도 푸시할 때 대용량의 파일은 올라가지 않으므로 다른 기능을 다운로드 받아야 하긴 하지만,

 

그정도는 아니라서 이번에는 이렇게 해결하였다.