오늘은 프로그래밍 기초주를 시작하면서 알고리즘 문제를 본격적으로 팀단위로 풀기 시작.
Lv1 문제 7문제 첼린지 문제(Lv1) 1문제를 공유해가면서 풀이 진행.
페어를 이루면서 인텔리제이의 세션공유 기능을 통해 함께 코딩을 하면서 서로 모르는 점이나 아는점을 공유
for문을 자세하게 알지 못했던거 같다.
for(선언부 ;조건부 ;증감부 ){
/*구현*/
}
이렇게 이루어져 있지만 사실상 증감부는 조건부를 읽어 구현부를 행하고 넘어와서 마지막에 할일을 정하는 부위다.
즉 초기화와 같은 내용을 적어도 문제가 없다.
for( ; ;count=0){
/*구현*/
}
그렇다면 생성부와 선언부는 꼭 체워야 하는것인가?
그렇지 않다. 필요없다면 무한한 for문을 만들 수 있다.
for( ; ; ){
System.out.println("무한")
}
보통 일반적으로 사용하는 방법이
int[] arr = { 1,2,3,4,5}
for(int i=0; i<arr.length; i++){
}
이런식으로 배열을 하나하나 읽어가는 방법을 많이 사용한다.
for문을 활용하기에 따라 다양하게 사용할 수 있다. 예를 들어 알고리즘 문제 적용하면 다르게 사용할 수 있었다.
public class Main {
public static void main(String[] args) {
Solution sol = new Solution();
int left = 13;
int right = 17;
System.out.println(sol.solution(left,right));
}
}
class Solution {
public int solution(int left, int right) {
int answer = 0;
int count = 0;
for ( ; left <= right; left++, count=0) {
answer = getAnInt(left, answer, count);
}
return answer;
}
private static int getAnInt(int left, int answer, int count) {
for (int j = 1; j <= left; j++) {
if (left % j == 0) {
count++;
}
}
if (count % 2 == 0) {
answer += left;
} else {
answer -= left;
}
return answer;
}
}
다음 문제는 left와 right 사이의 수(n 예명)의 약수의 개수가 짝수이면 n을 더하고 홀수이면 n을 빼기를해서 총 합의 결과를 구하라는 것이다.
fot문의 선언부를 비우고 left를 하나씩 증감시켜서 right값과 같을때까지 반복해서 수행하면 된다. 이떄 한번 반복을 마치면 증감식 대신 count를 0으로 초기화 하는 방법을 선택할 수 있었다.
isDigit() 함수는 명시된 char값이 숫자인지 여부를 판단하여 true 또는 false 값으로 리턴한다.
System.out.println(Character.isDigit('a')); //false
System.out.println(Character.isDigit('5')); //true
System.out.println(Character.isDigit(7)); //false. -->char타입이 아니기 때문
isLetter() 함수는 명시된 char값이 문자 인지 여부를 판단하여 true/false값을 리턴.
System.out.println(Character.isDigit('b')); //true
System.out.println(Character.isDigit('7')); //false