항해 9일차
오늘 하루도 알고리즘 문제를 계속 풀었고, 협력사 채용 세션이 있었다.
지금까진 IT회사에서 근무 경험이 없어 모든게 새로웠고 더 의지를 다질 수 있는 계기가 되었다.
채용 세션이 끝나고 자체 모의고사가 있었다. 총 2문제였고 나는 1번을 선택하여 문제를 풀고 나왔다. 나와보니 2번 문제에 대해 많은 토론이 있어 2번 문제도 함께 풀어보았다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는
solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
N | answer |
---|---|
123 | 6 |
987 | 24 |
문제의 예시와 같습니다.
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
while(n != 0){
answer += n % 10;
n /=10;
}
return answer;
}
}
모의고사 2번
성륜이는 오늘 항해99를 시작했다. 성격이 급한 성륜이는 항해 1일 차부터 언제 수료를 하게될 지 궁금하다.
항해 1일 차 날짜를 입력하면 98일 이후 항해를 수료하게 되는 날짜를 계산해주는 알고리즘을 만들어보자.
month | day | result |
---|---|---|
11 | 27 | :"3월 5일" |
6 | 22 | "9월 28일" |
month | day | result |
---|---|---|
1 | 18 | :"4월 26일" |
public class Test {
public String solution(int month, int day) {
String answer = "";
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int completion = 98;
int alldays = completion - (days[month - 1] - day); //85
int monthCnt = month + 1;
for (int i = month; i <= days.length; i++) {
if (alldays > days[i]) {
alldays -= days[i];
monthCnt++;
} else {
answer = monthCnt + "월 " + alldays + "일";
break;
}
}
return answer;
}
public static void main(String[] args) {
Test method = new Test();
System.out.println(method.solution(1, 18));
}
}