728x90
항해 9일차
오늘 하루도 알고리즘 문제를 계속 풀었고, 협력사 채용 세션이 있었다.
지금까진 IT회사에서 근무 경험이 없어 모든게 새로웠고 더 의지를 다질 수 있는 계기가 되었다.
채용 세션이 끝나고 자체 모의고사가 있었다. 총 2문제였고 나는 1번을 선택하여 문제를 풀고 나왔다. 나와보니 2번 문제에 대해 많은 토론이 있어 2번 문제도 함께 풀어보았다.
자릿수 더하기
문제
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는
solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력
N | answer |
---|---|
123 | 6 |
987 | 24 |
입출력 예 설명
- 입출력 예 #1
문제의 예시와 같습니다.
- 입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
풀이 과정
- 반복문으로 %10 으로 자릿수를 구하여 더해주고 N을 10으로 나눠준다.
1-1. N을 10으로 나눠주며 일의자리, 십의자리, 백의자리 순으로 구한다.
풀이 코드
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일 이후 항해를 수료하게 되는 날짜를 계산해주는 알고리즘을 만들어보자.
제한사항
- 1 ≤ month ≤ 12
- 1 ≤ day ≤ 31 (2월은 28일로 고정합니다, 즉 윤일은 고려하지 않습니다.)
입출력
month | day | result |
---|---|---|
11 | 27 | :"3월 5일" |
6 | 22 | "9월 28일" |
지정 입력값
month | day | result |
---|---|---|
1 | 18 | :"4월 26일" |
풀이 과정
- 98일에서 해당 월의 일자(1월은 31일, 2월은 28일...)를 빼줘서 구하는 방법을 선택했다.
- 지정 입력값으로 1월 18일이 입력되므로 당월은 입력 받는 18을 1월의 모든 일자(31일)에서 빼주고 allday변수에 누적 해서 뺴주었다.
- 2번 과정을 반목문으로 반복 하다보면 해당 월의 모든 일자보다 alldays가 작아지는 순간이 있다. 해당 부분에서 answer에 담아준다.
풀이 코드
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));
}
}
'TIL > 알고리즘' 카테고리의 다른 글
[TIL] 프로그래머스_로또의 최고 순위와 최저 순위 (0) | 2024.04.11 |
---|---|
[TIL] 프로그래머스_제일 작은 수 제거하기 (0) | 2024.04.11 |
[TIL] 프로그래머스_완주하지 못한 선수 (0) | 2024.04.11 |
[TIL] 프로그래머스_나누어 떨어지는 숫자 배열 (0) | 2024.04.11 |
[TIL] 항해99 Day 5 (0) | 2024.04.11 |