모든 경우의 수를 하나하나 찾는 것이다 . (알고리즘 시간에 배운것을 기억하자! )
1018번. 굉장히 어려웠다. .
아하, 한 행 별로 비교하는 것이 아니고, 맨 왼쪽위 배열의 형태를 보고, 이에 맞춰 ROW+COL이 W나 B임에 따라 다른 것을 찾는 코드로 하는 방법이 더 현명하다.
*bruteforce != 써진 그대로 코드 작성임에 주의하자
백준 1463 :
2개의 어려웠던 이유
1. 내가 직접 숫자를 받아서 그거를 계산할 생각을했다 (또 멍청하게 풀려했다)
정답은 0부터 하나씩 올려서 666이 나올때 풀어내는 것이다
이게 2번. 6606도 해당 조건을 만족함을 몰랐다 .
in 은 sql에서도 부분적으로 있기만 하면, 아주 온화한 함수였다.
이도 같다. in은 아주 온화하게, 666이더라도 6606에서 직접적으로 666은 등장하지 않지만, in의 작동과정이
A in B에서 a의 앞을보고 찾고, 그다음 b를 찾다 a에서 못한게 나오면 성립한다.
즉, for '666' in str(num)에서! num이 6606이어도 성립한다.
++ For보다 while의 속도가 좋다. 그러므로 while을 활용할 수 있는경우에는 while을 사용하자.
brute force 식 방법은.
모든 case를 다 생각해내고 그것 마다 구현을 해주는 방식의 풀이라고 이해하는 것이 맞는 것 같다.
2839 - 01knapsack의 일종인거 같으나, weight가 없다.
이럴때는 한 방향으로 일정하게 정렬해주는게 굉장히 중요하다.
들어온 n이 5로 나눠질땐 바로 그 값을,
그렇지 않을땐 3씩 줄이고, 그 줄인 결과가 5로 나눠지면 그때의 cnt를
그 줄인 결과가 0이라면(3으로 나눠진다는 뜻) -> 만약에 18과 같이 둘다 가능한 경우면
n이 15에서 정리된다.
n==1 or n==2라면 -1을 출력한다.
Brute Force로 풀어야겠다 마음먹으면,
for문의 사용을 최소화하고. 모든 case에 대해서 if절을 활용하여 문제를 풀자
(그 과정에서 어떻게 진행할지를 고민하자 )
'코딩테스트' 카테고리의 다른 글
SET, MAP (0) | 2024.01.07 |
---|---|
정렬 (1) | 2024.01.01 |
일반 식의 알고리즘 (0) | 2023.12.30 |
코딩테스트 2 -> 문자열 부터 (0) | 2023.12.25 |
백준 코딩테스트 - 알고리즘 전까지 (1) | 2023.12.21 |