-
하샤드 수
public bool solution(int x) { bool answer = true; string str = x.ToString(); int[] number = new int[str.Length]; int sum = 0; for(int i = 0; i < str.Length; i++){ number[i] = int.Parse(str[i].ToString()); sum += number[i]; } if (x%sum == 0) answer = true; else answer=false; return answer; }
어제 본 코드카타에서 사용했던 것을 사용해서 만들어봤습니다.
잘 사용되서 기분이가 좋습니다. 굿
두 정수 사이의 합
while (a != b) { answer += a; a = (a > b) ? a - 1 : a + 1; } return answer + b;
우선 제가 한 코드는 아닙니다.
보고 되게 짧고 깔끔하게 적힌 코드라서 가져와봤습니다.
a와 b의 크기 차이에 따라서 +1를 어느 변수에 넣어줘야할지가 결정이 됩니다.
근데 이 생각을 뒤집듯 a가 크면 -1를 a가 작으면 +1를 해줘서 이 고민을 깔끔하게 해결하는 코드입니다.
생각 못했던 방식이라서 이렇게?! 라고 생각이 들었습니다.
콜라츠 추측
public int solution(int num) { int answer = 0; if (num != 1){ int count = 0; while(true){ if(num%2 ==0){ num /= 2; } else if (num%2 ==1) num = num * 3 + 1; count++; if(num == 1) return count; if(count >= 500) return -1; } } return answer; }
코드 자체는 크게 문제가 없었지만 매개변수가 int의 범위를 벗어나서 들어오게 된다면 중간에 오버플로우가 발생하게됩니다.
이때 if(num%2 == 0) else로 하게 된다면 count가 정상적으로 올라가지 않아서 정확한 값이 나오지 않습니다.
따라서 else if(num%2==1)을 해줘야지 정확한 값이 나오게 됩니다.
int의 범위를 아는 것이 중요해보였습니다.
서울에서 김서방 찾기
answer = Array.FindIndex(seoul, i => i == "Kim");
이것도 제가 쓴 코드는 아니지만 배열 함수를 이용해서 하는 것이기 때문에 가져와봤습니다.
사실 배열에서 원하는 값의 인덱스를 찾는 함수가 있다는 것은 알고 있었는데 찾지 못해서 for문을 이용해서 했었습니다.
근데 다른 분이 한 코드에서 있어서 가져와보았습니다.
오늘은 코드카타를 끝내고 발표준비 후에 발표가 있었습니다.
발표 후 피드백에서는 두가지로 첫번째로 interface를 사용했던 부분에서 interface에 있는 함수가 아닌 변수를 주로 사용할 경우에는 class로 만들어서 상속받는 것이 더 좋다. 와 아이템 스펙을 만드는 class에서 딕셔너리를 이용해서 저장해줬는데 그 class를 사용하는 법에 대해서 좀 더 좋게 만들 수 있는 피드백을 들었습니다.
그러고 나서 간단한 게임과 좋은 개발자에 대한 강의를 들었습니다.
큰일이 없었던 하루입니다.
대신 내일은 새로운 팀원분들을 만나서 새로운 프로젝트를 하는 날입니다.
잘 맞으시는 분들을 만나서 잘 진행되었으면 좋겠습니다.