devdw
bloom_
devdw
전체 방문자
오늘
어제
  • 분류 전체보기 (20)
    • develop (15)
      • 개발기록 (0)
      • Java (5)
      • C++ (4)
      • Spring (0)
      • Database (3)
      • Algorithm (1)
      • etc (2)
    • diary (3)
      • 일기 (0)
      • 🍕🍔🍟 (1)
      • Review (2)
    • works (1)
      • reviews (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Codility
  • 알고리즘
  • lesson1
  • float
  • PYTHON
  • class
  • array
  • java
  • 다이소
  • SourceCode
  • 코딩테스트
  • Share
  • STAEDTLER NORIS DIGITAL S PAN
  • 펜그립
  • xor
  • 순간접착제
  • github
  • 길벗
  • GIST
  • database
  • 스테들러노리스디지털펜
  • 신경망 교과서
  • 스테들러
  • AI
  • 변수
  • 난수생성
  • 신경망
  • 머신러닝
  • iteration
  • 조심또조심

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
devdw

bloom_

develop/Algorithm

[Codility] Lesson 1 - BinaryGap

2021. 8. 10. 21:51

문제 (+효율성)

양수 N이 주어지고 이 숫자를 이진수로 바꿨을 때, 1 사이에 낀 0의 최대 개수 구하기

예시

N(10) N(2) return
9 1001 2
529 1000010001 4
20 10100 1
15 1111 0
32 100000 0

풀이

JAVA - 100%

  1. 주어진 N을 binaryString 로 만든다.
  2. String을 char[] 로 만든다.
  3. 제일 큰 수를 돌려주기위한 int countMax = 0;, 1과 1 사이 0의 개수를 세기 위한 int countLocal=0을 정의한다.
  4. char[]를 하나씩 돌면서 '1'과 XOR 연산을 한다.
    4-1. XOR 연산이 0보다 크면 countLocal을 증가시킨다.
    4-2. XOR 연산이 0이면 countMax와 countLocal을 비교해 큰 수를 countMax에 저장한다.
  5. countMax 가 최종 값 이므로 반환시킨다.

TIP

XOR : 같으면 0, 다르면 1

  • 비트연산이 빠르기 때문에 중복값 처리하는 문제에서 사용하기 좋음
    devdw
    devdw
    끄적끄적

    티스토리툴바