2023-09-07 TIL (대용량 Github 업로드, 문자열처리)
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 에도 푸시할 때 대용량의 파일은 올라가지 않으므로 다른 기능을 다운로드 받아야 하긴 하지만,
그정도는 아니라서 이번에는 이렇게 해결하였다.