<6일차 주100시간 책상에 앉아 있기 성공!>
오늘은 우선 대략적으로 자바라는 언어를 이해하는데 시간을 할애 했던 것 같다!
알고리즘 문제를 풀어보면서 자바를 어떤식으로 사용해야 하는지? 에 대해 이해하는 시간이 많았던 것 같다.
<별찍기 문제>
public class Q1별찍기 {
public static void main(String[] args) {
int a = 5;
int b = 3;
for(int i=0; i<b; i++){
for(int j=0; j<a; j++){
System.out.print("*");
}
System.out.println();
}
}
}
///결과
*****
*****
*****
이 문제의 경우 이중 for문을 이용하여 i가 0으로 정의 된 후 다음 for문으로 넘어가고 j가 0으로 정의된 후 j가 a의 5만큼 도달할 때 까지 *을 찍고 다시 상위 for문으로 올라간 후 이걸 b의 3만큼 3번 반복 하게 된다.(어느정도 이해를 했지만 아직까지도 설명을 하려하면 어려운 것 같다..더 공부하자!)
<두 정수 사이의 합>
public static long solution(int a, int b) {
long answer = 0;
if (a < b) { //만약 a가 b보다 작거나 같다면
for (int i = a; i <= b; i++) {
//a부터 b까지 하나씩 증감한다
answer +=i;
//중요 x9999!!!! += 은 앞에 선언되어진 값에 더해준다.
//반대로 =+는 값이 현재 선언된 값으로 변경됨!
}
} else //만약 a가 b보다 크거나 같다면
for (int i = b; i <= a; i++) {
//b부터 a까지 하나씩 증감한다
answer +=i;
}
return answer;
}
///결과
a값을 5 b값을 3 으로 지정하였을 경우
12
내가 한 풀이는 이렇다.
두 정수 a,b가 있을 때
if 문을 이용하여 만약 a 가 b보다 작을 경우
for 문으로 이동하고 for문에서 i값을 a로 할당하여 b만큼 하나씩 증감하게 한다!
그리고 그 값을 += 라는 연산자를 이용하여 0이라는 answer 변수에 for문이 끝날때까지 더해준다.
public static long solution2(int c, int d) {
return sumAtoB(Math.min(c, d), Math.max(d, c));
// Math.min 은 int 값 중 작은 값을 가져오고 Math.max는 int 값 중 큰 값을 가져온다.
}
private static long sumAtoB(long c, long d){
//위의 내장 함수로 인해 c는3으로 바뀌고 d는 5로 바뀜!
return (c+d)*(d-c+1)/2;
//등차수열의 합 공식 (d-c+1)*(c+d)/2; 이렇게 해도 동일함!
}
}
////결과
c값을 5 d값을 3 으로 지정하였을 경우
12
String 문자열을 Integer 문자열로 바꾸기
public class Q5charStringToInteger {
public static void main(String[] args) {
System.out.println(solution( "12321", "24.32"));
}
public static int solution(String s,String n) {
int answer = Integer.parseInt(s);
// Integer.parseInt('n')는 n이 숫자나 문자로 구성되어 있을경우 숫자 부분만 지정한 진법으로 변환하는 함수!
// Integer.parseInt(str,nBase)는 입력된 문자의 진법을 나타내고, 생략할 경우 10진수를 의미한다.
//Float.parseFloat()함수는 숫자형 문자열을 입력받아 부동 소수점으로 변환하여 그 값을 반환해주는 함수.
// ex) Float answer1 = Float.parseFloat(n);
return answer;
}
}
///결과
s값을 "12321" 문자열로 주었을 때
12321
포기만 하지말자 내 자신아😂😂😂😂