오늘 공부한것
* 알고리즘 문제풀이
* 3주차 강의 복습
오늘은 새로운 주차의 시작이었다
팀원도 바뀌었다
두분은 비슷한 학과를 재학중이셨고
한분은 1년정도 개인적으로 공부하셨다고한다
이번에도 아무것도 모르고 항해를 시작한건 나혼자였다
많은 도움을 받아야겠다고 생각하면서 알고리즘 풀이가 시작되었다
알고리즘 문제풀이는 2명씩 한조가되어
서로 번갈아가면서
네비게이터와 드라이버의 역활을 하며 진행되었다
하지만 나는 팀원에 비해 진도가 늦는 터라 어떻게 접근해야하는지
알려주셔서 그걸 토대로 문제 풀어보고 궁금한거 물어보고 검사받는 식으로 진행하였다
문제1 짝수와 홀수 |
문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
|
class Solution { // input // int num // // 계산 // num%2==0 짝 // num%2==1 홀 // // output // 짝수면 Even // 홀수면 Odd public String solution(int num) { String answer = ""; if (num%2==0){ answer="Even"; } else{ answer="Odd"; } return answer; } } |
문제2 평균 구하기 |
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
|
class Solution { // input // 배열arr // // 계산 // 1+2+3 / 3 = 평균값 // // output // arr의 평균값 public double solution(int[] arr) { double sum=0; double answer = 0; for (int i=0; i sum += arr[i]; } answer = sum/arr.length; return answer; } } |
문제3에서 어려웠던 부분은
숫자->문자열, 문자열-> 숫자로 변경하는 부분 이었다
자연수 N을 N의 자릿수로 바꾸기 위해서 숫자->문자열로 변경하고
문자열로 변경된 것의 합을 return하기 위해서 문자열->숫자로 변경이 필요했다
문제3 자릿수 더하기 |
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. |
import java.util.*; public class Solution { // input // 자연수 n // // 계산 // 자연수 n 은 문자열 // 숫자->문자열 Integer.toString() // 문자열->숫자로 변환 Integer.parseInt() // 후 sum // // output // n의 각 자릿수의 합 public int solution(int n) { int answer=0; String transStr=Integer.toString(n); for (int i=0; i<transStr.length();i++){ answer += Integer.parseInt(transStr.substring(i, i+1)); } // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다. System.out.println(answer); return answer; } } |
문제4 약수의 합 |
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
|
class Solution { // 약수 = 어떤수를 나누어 떨어지게 하는 수 // input // // 계산 // int i=0; i<=n; i++ // 정수n%i ==0 // //output // return answer public int solution(int n) { int answer = 0; for(int i=1; i<=n; i++){ if(n%i==0){ answer += i; } } return answer; } } |
문제5에서 문제가 되었던건 break;를 하지 않았던 것이었다
break;를 하지 않았더니 중복되는 숫자가 발생했던 것이다
가장 작은 자연수를 return 해야는데 중복값이 나와서 통과가 되지 않았다
문제5 나머지가 1이 되는 수 찾기 |
문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
|
class Solution { // input // n // // 계산법 // int n 매개변수 // n%x==1 가장 작은 자연수 x // //output // return answer public int solution(int n) { int answer = 0; for (int i=1; i<=n; i++){ if(n%i==1){ answer = i; break; } } return answer; } } |
문제6번에서는 계산방법의 표현이 문제였다
x=2 이고 n=5일때 [2, 4, 6, 8, 10]이 나와야 하는데
이것이 수학적으로 어떻게 표시되는지를 몰랐다...
그래서 손으로 종이에 써가면서 관련 수식을 찾았다
또한 제한 조건에 x는 10000000 이상, 10000000 이하인 정수 라는 이야기가 있었는데
int는 이 범위에 해당하지 않아 long으로 변형하는 것이 필요했다
문제6 x만큼 간격이 있는 n개의 숫자 |
문제 설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
|
class Solution { // input // int x 정수 // int n 자연수 // // 계산방법 // x=2 2씩 증가하는 [2, 4, 6, 8, 10] n=5 // //output // x부터 x식 증가하는 숫자를 n개 지니는 list public long[] solution(int x, int n) { long[] answer = new long[n]; for(int i=0; i<answer.length; i++){ answer[i] = (i+1)*(long)x; //X x 2 } return answer; } } |
'항해99' 카테고리의 다른 글
23.08.14~08.20 항해 99 16기 1주차 회고록 (0) | 2023.08.20 |
---|---|
23.08.19 항해 99 16기 프로그래밍 기초2 2일차 (0) | 2023.08.19 |
23.08.17 항해 99 16기 프로그래밍 기초1 4일차 (0) | 2023.08.17 |
23.08.16 항해 99 16기 프로그래밍 기초1 3일차 (0) | 2023.08.16 |
23.08.15 항해 99 16기 프로그래밍 기초1 2일차 (0) | 2023.08.15 |