-내 풀이-
public class Solution
{
public bool solution(int x)
{
bool answer = true;
int sum = 0;
char[] temp = x.ToString().ToCharArray();
for(int i = 0; i < temp.Length; i++)
{
sum += int.Parse(temp[i].ToString());
}
if(x%sum == 0)
return answer;
else
return false;
}
}
-다른사람의 풀이-
public class Solution {
public bool solution(int x) {
bool answer = true;
char[] arr = x.ToString().ToCharArray();
int Temp = 0;
foreach (char item in arr)
{
Temp += int.Parse(item.ToString());
}
answer = false;
}
return answer;
}
}
배열의 반복문은 foreach 문을 사용하면 더 간단하다!!!
-나의 풀이 -
public class Solution
{
public long solution(int a, int b)
{
long answer = 0;
if(b >= a)
{
for(int i = a; i < b+1; i++)
answer += i;
}
else
{
for(int i = b; i < a+1; i++)
answer += i;
}
return answer;
}
}
-다른 사람 풀이-
using System;
public class Solution {
public long solution(int a, int b) {
long answer = 0;
return ((long)(Math.Abs(a - b) + 1) * (a + b)) / 2;
}
}
다른 사람의 풀이를 보면서 알게 된 것은 Math.Abs()로 절댓값을 계산 할 수 있다는 것을 새롭게 알게 되었고, 고등학교 때 배웠던 등차수열의 계산법을 이용해서 풀이하는 생각을 할 수 있다는 것에서 조금 놀랐다. 확실히 이런 계산 문제에서 수학적 개념을 이용한다면 이번 문제에서 처럼 반복문 대신 간단한 연산만으로도 값이 나오게 되므로 코드를 더 간단하고 효율적으로 짤 수 있기 때문에 프로그래밍 수학 공부도 소홀히 하면 안된다는 것을 느끼게 되었다.
public class Solution {
public int solution(int num)
{
long temp = num;
int answer = 0;
while(temp != 1)
{
if(temp % 2 == 0)
temp /= 2;
else
temp = temp * 3 + 1;
answer++;
if (answer > 500)
{
return -1;
}
}
return answer;
}
}
처음 문제를 풀때 입력받은 num값을 따로 long형태로 바꾸어 주지 않고 바로 num값으로 반복문을 계산하였는데, 입력값 626331을 입력받았을 때 계속 오류가 나게 되었다.
처음에는 이유를 알지 못했는데 계속 코드를 들여다보다가 반복문에서 홀수일때는 3을 곱해주다보니 어떤 경우에서는 num값이 int 의 최대값 이상이 된다는 것을 알게 되었다. 앞으로는 int 값에서 끝날것 같아 보이는 연산이어도 곱연산 같이 값이 한번에 커지게 되는 연산에서는 주의해야 될 것 같다.
c# -> 다중상속은 지원x 인터페이스상속을 할때만 가능
virtual >> 참조의 형태와 실형태가 다를떄 사용
Math.Abs()로 절댓값 계산 가능
배열의 반복문은 foreach문을 사용하면 더 간단하다.
곱연산같이 한번에 크기가 커지는 연산에서는 각 자료형의 크기에 주의하라!