본문 바로가기

전체 글229

월간 코드 챌린지 시즌1 > 쿼드압축 후 개수 세기 - JAVA (분할 정복) https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 나의 생각 제목이 거창하지만 결국에는 분할 정복입니다. 분할 정복은 조건에 부합하지 않을 경우 탐색 범위를 줄여가면서 조건을 부합하는 경우를 찾아가는 겁니다. 그렇기 때문에 우선 위의 그림처럼 처음에 2차원 배열을 값들을 한 번 살펴봅니다. 그랬을때 모든 값이 같으면 그 값으로 압축하면 끝 하지만 다른 값이 있으면 4등분하고 다시 검색하는 겁니다. 저 같은 경우 메소드를 하나 만들어 살펴.. 2024. 1. 22.
비트 연산자 사용하기 - 2편 (NOT 연산의 과정, 5의 NOT이 -6인 이유) https://fall-in-dream.tistory.com/86 비트 연산자 사용하기 - 1편 비트 연산자를 사용하여 정수형 데이터의 비트 단위 조작을 할 수가 있습니다. 주요 비트 연산자는 종류 설명 AND(&) 두 비트가 모두 1일 때만 결과가 1이 됩니다. OR(|) 두 비트 중 하나라도 1이면 fall-in-dream.tistory.com 위의 글을 보신 분들 중 의아한?궁금한? 부분이 있으신 분들이 있을거라고 생각합니다. 그것은 바로 1. NOT 연산의 결과 2. >>연산과 >>>의 차이 라고 생각합니다. 이번에는 우선 NOT 연산의 결과를 다시 한 번 살펴 봅시다. int a = 5(0101) 를 Not 연산 결과로 -6(1010)이 나왔습니다. '0101'을 NOT(~) 연산했으니 0과 1.. 2024. 1. 22.
비트 연산자 사용하기 - 1편 비트 연산자를 사용하여 정수형 데이터의 비트 단위 조작을 할 수가 있습니다. 주요 비트 연산자는 종류 설명 AND(&) 두 비트가 모두 1일 때만 결과가 1이 됩니다. OR(|) 두 비트 중 하나라도 1이면 결과가 1이 됩니다. XOR(^) 두 비트가 서로 다르면 결과가 1이 됩니다. NOT(~) 비트를 반전시킵니다. 0은 1로, 1은 0으로 바꿉니다. 시프트 연산자(, >>>) > (오른쪽 시프트): 비트를 오른쪽으로 이동시킵니다. 왼쪽에 부호 비트로 채워집니다. >>> (부호 없는 오른쪽 시프트): 비트를 오른쪽으로 이동시키되, 왼쪽에 0으로 채웁니다. 정도가 있습니다. 예시 1. AND(&) 연산자 : 두 비트가 모두 1일 때만 결과가 1이 됩니다. int a = 5; // 이진수: 0101 int.. 2024. 1. 22.
월간 코드 챌린지 시즌2 > 2개 이하로 다른 비트 https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 나의 생각 처음에는 주어진 숫자(numbers[i])에 +1(이하 B)을 하고 XOR 연산을 한 후 Long.bitCount 를 통해 1의 갯수의 차이를 구한다. 이 차이가 2이하일 경우 answer[i]에 값을 저장한다. 아닐 시 B에 +1을 한다. 위를 반복했다. 결과적으로 시간 초과가 발생했다. 아무래도 숫자가 커질 수록 (주어진 범위가 10의 15승이다) 비트 1개의 차이를 찾는게.. 2024. 1. 21.
코딩테스트 연습 > 택배상자 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/131704# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 나의 생각 원래 레일에는 1번 택배부터 n번 택배까지 순서대로 올라와 있다. 하지만 목적지에 따라 기사가 원하는 순서대로 바꾸기위해서 보조 컨테이너 벨트를(이하 보조 벨트) 사용할 수 있다. 이 보조 벨트에서 짐을 내리는 순서는 올려놓은 순서의 역순으로만 내릴 수 있다. 즉, 4번을 먼저 싣기위해 1, 2, 3 번을 보조 벨트에 올리면 3, 2, 1 순으로 꺼낼 수 있다. 이건 뭐다?.. 2024. 1. 21.
코딩테스트 연습 > 약수의 합 - JAVA 주소 풀이 - 나의 생각 효율적으로 약수를 구하는 방법을 알려드리고자 들고온 문제입니다. 보통 n의 약수를 구하기 위해서 사용하는 방법은 public int solution(int n) { int answer = 0; for(int i = 1; i 2024. 1. 16.