Coding Test/Java Coding Test

[프로그래머스 / 자바] - 7의 개수

nam_ji 2024. 7. 19. 15:13

7의 개수

문제

  • 정수배열 array가 매개변수로 주어집니다.
  • 7의 총 개수를 출력하는 문제입니다.
  • 입출력 예
    • array result
      [7, 77, 17] 4
      [10,29] 0


테스트 (인텔리제이)

  • 3가지의 풀이를 가져와 봤습니다.
  • 우선 첫 번째 풀이는 StringBuilder 변수를 만들고
  • for문을 통해 array의 원소를 append 메서드로 StringBuilder에 추가합니다.
  • StringBuilder를 split 메서드를 통해 문자마다 자르고 for문으로 하나씩 꺼내줍니다.
  • if문으로 하나씩 꺼낸 문자열을 Integer 클래스의 parseInt 메서드로 정수로 변환해줍니다.
  • 변환된 정수와 7이 같으면 answer를 1씩 카운트하게 하면 됩니다.
public class _7의_개수 {
  public static void main(String[] args) {
    int[] array = {7, 77, 17};
    int answer = 0;
    StringBuilder sb = new StringBuilder();

    for (int j : array) {
      sb.append(j);
    }
    for (String s : sb.toString().split("")) {
      if (Integer.parseInt(s) == 7) {
        answer++;
      }
    }
    System.out.println(answer);
  }
}
  • array의 원소를 for문을 통해 하나씩 꺼내 j에 저장하도록 합니다.
  • for문 안에는 while으로 j 값이 0보다 클 때만 즉, 0보다 작아지면 멈추도록 조건을 주고 내부에서 if문으로 j를 10으로 나눈 나머지가 7과 같으면 answer를 1씩 카운트 하도록 합니다.
  • if문 밖에서는 j 값을 10으로 나눈 몫을 j에 다시 저장하도록 합니다.
  • 그럼 j의 값은 점점 작아지고 나중에 while문이 멈추고 7의 개수도 카운트 할 수 있습니다.
public class _7의_개수 {
  public static void main(String[] args) {
    int[] array = {7, 77, 17};
    int answer = 0;

    for (int j : array) {
      while (j > 0) {
        if (j % 10 == 7) {
          answer++;
        }
        j /= 10;
      }
    }
    System.out.println(answer);
  }
}
  • 이번에도 첫 번째 방법과 같이 StringBuilder 변수인 sb에 array원소를 추가해줍니다.
  • for문을 sb 크기만큼 순회하도록 하고 if문으로 sb의 substring 메서드로 i부터 i+1까지 로 문자열을 잘라줍니다. 그럼 sb의 문자열이 하나의 문자처럼 잘라서 비교할 수 있기 때문에 7의 개수를 구할 수 있습니다.
  • substring 메서드로 자른 문자열을 equals 메서드를 통해 문자열 7과 비교하도록 해서 true가 반환되면 answer가 1씩 카운트 할 수 있도록 했습니다.
public class _7의_개수 {
  public static void main(String[] args) {
    int[] array = {7, 77, 17};
    int answer = 0;
    StringBuilder sb = new StringBuilder();

    for (int j : array) {
      sb.append(j);
    }
    for (int i = 0; i < sb.length(); i++) {
      if (sb.substring(i, i + 1).equals("7")) {
        answer++;
      }
    }
    System.out.println(answer);
  }
}

프로그래머스 코드

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        StringBuilder sb = new StringBuilder();
        
        for (int j : array) {
            sb.append(j);
        }
        for (String s : sb.toString().split("")) {
            if (Integer.parseInt(s) == 7) {
                answer++;
            }
        }
        return answer;
    }
}

int to String to int

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        
        for (int j : array) {
            while (j > 0) {
                if (j % 10 == 7) {
                    answer++;
                }
                j /= 10;
            }
        }
        return answer;
    }
}

while

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        StringBuilder sb = new StringBuilder();

        for (int j : array) {
            sb.append(j);
        }
        for (int i = 0; i < sb.length(); i++) {
            if (sb.substring(i, i + 1).equals("7")) {
                answer++;
            }
        }
        return answer;
    }
}

substring