간단한 문자열 문제

이정우·2022년 2월 16일
0

취업

목록 보기
2/2

어제 면접 때 총 여섯 문제를 풀었는데 그중에 한 문제는 아예 모르겠었고 나머지 문제는 다 풀어볼 수 있지 않았을까 집에와서야 생각했습니다..

일단 나머지 다섯 문제 중 하나는 어제 풀었고 한 문제는 긴 문자열을 입력 받았었는데 문제가 기억이 안 나서 패스해야할 거 같습니다. 그외에 두 문제는 풀긴 했는데 이상하게 풀었으므로 따로 다시 생각해볼 생각입니다. 그래서 총 다섯 문제중 한 문제는 기억도 잘 나고 당시에 맨붕 + 실력 부족으로 못 푼게 너무 아쉬워서 아침에 풀어봤습니다.

public class Count_eight {

	public static void main(String[] args) {
		int input = 0;
		/*
		 * 0~8888까지 8의 갯수.
		 */
		int cnt = 0;
		for (input = 0; input < 8888; input++) {
			String stringCnt = Integer.toString(input);
			for (int i = 0; i < stringCnt.length(); i++) {
				if (stringCnt.charAt(i) == '8') {
					cnt++;
					System.out.println(stringCnt);
				}
			}
		}
		System.out.println("총 8의 사용 횟수 : " + cnt);
	}
}

문제는 input 값을 1씩 증가해줄 때 해당 수에 8이 몇 번 존재하는지 찾는 식의 문제였습니다.(약간 변형했습니다.) 당시에는 string형으로 바꿔서 charAt을 쓰면 쉽게 될 거를 머리가 빙빙 돌아 이걸 string으로 바꿀까 아니면 수학적으로 접근해서 자릿수별로 8을 나눠서 나머지를 통해 구할까 머리가 복잡했던 거 같습니다.

문제 푸는 방법은 첫 for문을 통해 input 값을 1씩 늘려주고 input 값에 8을 카운팅 하기 위해 String으로 바꿔줬습니다. 그 후 이중 for문을 사용하여 charAt 메소드를 써서 해당 String을 하나씩 해부해서 8이 존재하는지 확인 후 cnt 값을 늘려줬습니다.

집에서 푸니 마우스 놓고 3분 정도 생각하고 풀어보니 10분도 안 걸린 문제였는데 당시에는 손도 못 댄게 살짝 아쉽네요. 좀 더 공부해서 아무리 긴장해도 이정돈 풀 수 있게 되어야 할 거 같습니다.

profile
프로그래밍 공부 중!

0개의 댓글