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;
}
}
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;
}
}
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;
}
}