250x250
250x250
JinSeopKim
Hello World!
JinSeopKim
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • Artificial intelligence (14)
      • DeepDiveToAI (3)
      • Pytorch (3)
      • Etc (8)
    • Back-end (19)
      • Spring (10)
      • JPA (9)
    • Language (24)
      • Python (3)
      • Java (11)
      • Swift (10)
    • Math (4)
      • Linear Algebra (4)
    • CodingTest (79)
      • Algolithm (12)
      • Backjoon (25)
      • Programmers (42)
    • Etc (27)
      • Book Review (3)
      • Adsp (6)
      • Life (2)
      • Docker (1)
      • odds and ends (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

인기 글

태그

  • AI
  • 알고리즘
  • 코딩테스트
  • 문제풀이
  • ios
  • 파이썬
  • DP
  • Python
  • JPA
  • 개발
  • BFS
  • 구현
  • uArm
  • certificate
  • 프로그래머스
  • JAVA8
  • Front-end
  • 개발자
  • SpringMVC
  • 백준
  • 카카오
  • java
  • BOJ
  • ADsP
  • 자바
  • swift
  • 브루트포스
  • 머신러닝
  • data
  • 선형대수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JinSeopKim

Hello World!

브루트포스(1) - 무작정 해보기
CodingTest/Algolithm

브루트포스(1) - 무작정 해보기

2021. 10. 12. 01:47
728x90
728x90

브루트 포스 알고리즘

모든 경우의 수를 해보는 알고리즘이다.

무작정 반복문을 돌려 구할 수도 있다.

 

브루트포스 알고리즘 예시

문제 : n이 주어졌을때, 1부터 n 중에 2의 배수의 수는? (1<= n < 10000000)

n을 1부터 n까지 확인하면 시간 복잡도는 O(n)이다.

n의 최악의 경우 1천만이므로 브루트포스로 다 구해볼 수 있다. (수식을 사용하면 상수시간으로 처리 가능하다.)

public int Solution(){
  int n = sc.nextInt();

  int cnt = 0;
  for(int i = 1; i <= n; i++){
      if(i%2 == 0)
          cnt++;
  }
  return cnt
}

 

시간 복잡도 계산

O(경우의 수* 처리)의 시간이 걸리므로 구현 전에 확인하여 가능한지 체크한다.

O(n!)의 복잡도일 경우 n이 보통 10 이하일 경우 가능

O(2^n)는 n이 20이하에 가능하다.

처리하는 알고리즘에 따라 다르다.

 

브루트 포스를 풀며 느낀 점은 처리하는 것에 있어 불필요한 반복이 많다.

시간을 줄이기 위해서는 불필요한 반복 확인하고 줄이는 것이 중요하다.

728x90
728x90
저작자표시 비영리 (새창열림)

'CodingTest > Algolithm' 카테고리의 다른 글

브루트포스(3) 순열  (0) 2021.11.03
브루트포스(2) 재귀  (0) 2021.11.02
최대, 최소공배수 그리고 소수  (0) 2021.10.10
약수  (0) 2021.10.07
수학 - Mod연산  (0) 2021.10.06
    'CodingTest/Algolithm' 카테고리의 다른 글
    • 브루트포스(3) 순열
    • 브루트포스(2) 재귀
    • 최대, 최소공배수 그리고 소수
    • 약수
    JinSeopKim
    JinSeopKim
    기록📚

    티스토리툴바