[백준] 1436번 : 영화감독 숌

letsbebrave·2021년 12월 9일
0

codingtest

목록 보기
9/146

문제

느낌

666이 연속으로 적어도 3번 이상 들어간지 확인해주기 위해 처음엔 숫자로 나눠서 그 몫이 6인지 아닌지 확인해보는 방식으로 진행해보았으나, 너무 복잡함을 깨닫고 어떻게 해야 할지 찾아보았다. 일단 문자열로 바꿔서 "666"이란 문자열이 포함되는지 확인하는 게 훨씬 낫다는 것을 알게 되고, contains() 메소드를 사용하면 된다는 힌트까지 얻었다.
그 다음엔
while(true) 반복문에 대한 이해가 부족해서 맞왜틀 맞왜틀을 1시간 30분동안 반복했다. 결국 2시간만에 풀어냈다.
while 반복문에 대해 더 학습해야 할 것 같다!

필수 개념

666이 포함되었는지 확인할 때엔 문자열로 파악하는 게 나음
cf.
int -> String : String.valueOf()Integer.toString()
String -> int : Integer.valueOf()

Java에서 문자열에 문자가 포함되어 있는지 확인하는 방법

  1. contains()
  • booleans contains(CharSequence s)
  • 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수
  • 대/소문자/공백 구별함
public class baek_1436 {

	public static void main(String[] args) {

		String str = "1999666";
		
		System.out.println(str.contains("666")); // true
		System.out.println(str.contains("9")); // true
		System.out.println(str.contains("66 ")); // false (공백구분)
		
	}

}
  1. indexOf()
  • int indexOf(String str)
  • 대상 문자열에 해당 문자열이 포함되어 있는지 확인
  • 없으면 -1 출력, 있으면 str에서 첫번째 문자의 index 값 출력
public class baek_1436 {

	public static void main(String[] args) {

 String str1 = "Hello World!";
	     if(str1.indexOf("World") != -1)
		 {
		        System.out.println(str1.indexOf("World")); 
                        // 6
	    	 	System.out.println("The String "+str1+" contains World"); 
                        // The String Hello World! contains World     
		 }
	     else
		 {
		         System.out.println("The String "+str1+"does not contain World"); 
		 } 
     }
}

풀이

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
	      int count = 0; // N과 비교하기 위한 ~번째
	      
	      Scanner sc = new Scanner(System.in);
	      
	      int N = sc.nextInt(); // 입력받는 ~번째
	      
	      sc.close();
	      
	      int num = 666; // 출력되는 N번째 수
	      
	      String str = String.valueOf(num);
	      
	      while(true) {

	    	  if(str.contains("666")) {
	    		  count++;
	    		  //System.out.println(count);
	    	  }
	    	  
	  
	    	  if(count == N){
	    	      System.out.println(num);
	    	      break;
	    	  }
	    	  
	    	  num++; 
	    	  
	    	  str = String.valueOf(num);
	      }
	}
}

References

Java에서 문자열에 문자가 포함되어 있는지 확인하는 방법
https://www.delftstack.com/ko/howto/java/how-to-check-if-a-string-contains-character-in-java/

contains() 메소드
https://mine-it-record.tistory.com/137

늘 감사하게 참고하는 블로그
https://st-lab.tistory.com/103

profile
그게, 할 수 있다고 믿어야 해

0개의 댓글