TIL 2022-01-04

그린·2022년 2월 2일
0

TIL

목록 보기
2/47

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제곱

      (출처 : https://coding-factory.tistory.com/531)

    • 풀이에 관해

      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. 느낀 점

은근히 헷갈린 부분들이 많았다. 이렇게 오늘 배운 내용들을 다시 복습하면서 내 것으로 만들어야겠다.

계획 상 더 해야 했지만 오늘 어제 오늘 운동때문에 피곤해서 내일 꼭 마저 해야겠다.

profile
기록하자

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN