最悪なくらい難しく考えててWA
考えたこと
規則性の問題だと思ってその解き方をして結局解けず
11 22 33 ... 99
N >100 => 9個
1010 1111 1212 ... 1919 ... 9191 9292 9393 ... 9999
9*10なので、
N>1000 => 9*10
=> 90個
N>100000 => 9*10*10
=> 900個...
なのでwhile
でNを10で割ったり100で割ったりしていたけど、
1333
の場合やちょうど割り切れる10000
のような場合で答えが合わずに撃沈
解き方
クソ簡単で
結局ゾロ目になる場合ってのは1+1をStringに変換した場合
よって制限は1012なので、106までループさせて
N
を超えたところのカウンタに-1したものが答え。
愚直に数値=>文字列変換が思いつかなかったのが敗因。
package AtCoder.ABC196; import java.util.Scanner; public class MainC { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Long n = sc.nextLong(); sc.close(); for(int i = 0; ; i++) { if(Long.parseLong(String.valueOf(i) + String.valueOf(i)) > n) { System.out.println(i-1); return; } } } }