1. 오늘 학습한 내용
코드업 기초 100제 1021 ~ 1027번
사용 언어 : 자바
2. 오늘 알게 된 내용
1024번 문제
String형에서 한 문자씩 가져오는 방법
: .charAt(인덱스번호)
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(int i =0;i<len;i++) {
System.out.printf("\'%c\'\n", a.charAt(i));
}
(코드 출처 : https://javaprograming.tistory.com/22)
처음에 나는
String[] s = scanner.next().split("");
이렇게 각 문자들을 한 배열에 담는 방식으로 진행했었는데, 내가 괜찮은 방법을 쓴건지 애매해서 검색해봤는데 위와 같이 .charAt() 메서드를 이용해 보다 더 간편하게 구현할 수 있다는 것을 알게 되었다.
1025번 문제
거듭제곱 구하기
: Math.pow()
ex) Math.pow(5,2) == 5의 2제곱
풀이에 관해
1) 나의 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(); //입력받은 수
int n; //몫
for(int i = 4; i >= 0; i--) {
n = num / (int) Math.pow(10,i);
System.out.printf("[%d]\n", n * (int) Math.pow(10,i));
num = num - n * (int) Math.pow(10,i);
}
}
}
나는 위의 코드로 작성을 했는데, 직접 각 부분을 10의 거듭제곱을 통해 구하면서 진행하는 방식이다. 정답으로 뜨긴 했으나 조금 비효율적일 수도 있는 방법인 것 같았다.
하지만 다른 분들의 풀이를 한번 검색해보았는데
(중략)
Char[] li = a.toCharArray();
for (int i = 0; i < li.length; i++) {
System.out.print("[" + li[i]);
for (int j = li.length-1; j > i; j--)
System.out.print("0");
System.out.print("]\n");
}
이런 식으로 직접 문자열 배열을 만들고(.toCharArray() 메서드 이용) 이 배열에서 하나씩 꺼내와서 출력하는 방식이 있었다. 내 방법보다 훨씬 더 효율적인 방법이라는 생각이 들었다.
1026번 문제
문자열 값이 같은지 비교
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] time = scanner.next().split(":");
for (int i = 0; i < time.length; i++) {
if (time[i].equals("00"))
time[i] = "0";
}
System.out.println(time[1]);
}
}
여기에서 if문에서 처음에 작성할 때 time[i] == "00" 으로 작성해서 if 문 안으로 넘어가지 않는 문제가 발생했었다. 어디가 문제인지 감이 안 왔어서 한참을 헤맸는데 생각보다 간단한 부분에서 문제였었다. 문자열에서는 ==으로 비교하는 게 아니라 .equals() 메서드로 값을 비교한다는 사실을 잊지 말자!
3. 느낀 점
은근히 헷갈린 부분들이 많았다. 이렇게 오늘 배운 내용들을 다시 복습하면서 내 것으로 만들어야겠다.
계획 상 더 해야 했지만 오늘 어제 오늘 운동때문에 피곤해서 내일 꼭 마저 해야겠다.