본문 바로가기
코딩테스트

[백준] 1105번 '팔' - Java

by CuckooBird 2024. 8. 21.

https://www.acmicpc.net/problem/1105


문제


풀이

  • L과 R의 자리수가 다를 경우 → ans =0
  • L과 R의 자리수가 같은 경우
    • 가장 큰 자리수 부터 10의 자리까지 반복문
      • 같은 자리의 수가 같고 '8'인지 확인 → ans ++
      • 같지만 8이 아닌 것은 continue지만, 같지 않은 수는 break 해야함 (예를 들면, 780과 789에서 7은 continue해야함)
    • 두 수가 같은데 마지막이 8이라면 → ans ++ (10의 자리까지 방문하기 때문에 따로 처리)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		String L = st.nextToken();
		String R = st.nextToken();
		
		int ans=0;
		if(L.length() == R.length()) {
			for(int i=0; i<L.length()-1; i++) {
				if(L.charAt(i)=='8'&& L.charAt(i) == R.charAt(i)) ans ++;
				else if(L.charAt(i) != R.charAt(i)) break;
			}
            if(L.equals(R)&& L.charAt(L.length()-1)=='8') ans ++;
		}
		
		System.out.println(ans);
	}
}

회고

정확한 범위가 있는 문제는 문자열로 풀면 메모리초과 날 줄 알았는데 편견이었나봅니다 ㅎㅎ

else if를 놓쳐서 계속 틀렸었네요 💦