목록비트마스킹 (6)
기록방
👉 문제링크🔸 문제 분석 🔸K개의 문자를 배웠을 때, N개의 단어(문자열) 중 최대 몇 개를 읽을 수 있는지 출력한다.모든 단어는 anta로 시작해 tica로 끝난다.🔸 문제 풀이 🔸단어의 시작과 끝이 정해져 있으므로, 'a', 'n', 't', 'i', 'c' 다섯 글자는 반드시 읽을 줄 알아야 한다.K가 5 미만인 경우에는 0을 반환한다.K >= 5 일 때, K-5 개의 문자를 추가로 배워서 몇 개의 단어를 읽을 수 있는지 확인해야 한다.비트 마스킹으로 배운 문자를 표시한다.배운 문자로 단어를 읽을 수 있는지 비트 마스킹으로 확인한다.🔸 코드 🔸import java.io.*;import java.util.StringTokenizer;public class Main { private ..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 0에서 n까지 이동하는 최소 점프 수를 반환한다. 점프하면 한 칸 앞으로 이동한다. 텔레포트하면 현재 인덱스의 2배 인덱스로 이동하고, 점프 수는 증가하지 않는다. 🔸 문제 풀이 🔸 텔레포트는 짝수 인덱스에서만 가능하고, 점프 수가 증가하지 않으므로 무조건 많이 쓰면 좋다. 0부터 시작해 n으로 향하면, 쓸 데 없는 경우의 수가 많아지므로 확실히 도착하는 경로를 찾기 위해서 n부터 시작해 0으로 끝나도록 계산한다. 현재 수가 짝수라면 n/2 절반 인덱스로 이동한다. (텔레포트) ..
👉 문제링크 24389번: 2의 보수 컴퓨터는 뺄셈을 처리할 때 내부적으로 2의 보수를 사용한다. 어떤 수의 2의 보수는 해당하는 숫자의 모든 비트를 반전시킨 뒤, 1을 더해 만들 수 있다. 이때, 32비트 기준으로 처음 표현했던 수와 www.acmicpc.net 🔸 문제 분석 🔸 주어진 수를 2진수로 바꾼 값과 그 값을 2의 보수로 바꾼 값의 0과 1의 차이의 개수를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr1 = new int[32]; int[]..
👉 문제링크 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 🔸 문제 분석 🔸 64cm 막대기를 원하는 크기(x)의 막대기로 만들때, 조각의 개수를 출력한다. 모든 막대의 합이 x보다 크면 다음 과정을 반복한다. 가장 짧은 막대를 절반으로 자른다. 자른 막대의 절반을 버렸을때도 전체 합이 x보다 크다면, 그 막대를 버린다. 막대 조각의 개수는 과정의 반복 횟수와 같다. 🔸 코드 🔸 import java.util.ArrayList; import java.util.Scanner; public class Mai..
👉 문제링크 2961번: 도영이가 만든 맛있는 음식 첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 www.acmicpc.net 🔸 문제 분석 🔸 재료 선택에 따라 신맛과 쓴맛의 합이 변한다. 신맛(s)은 곱으로 계산한다. 쓴맛(b)은 합으로 계산한다. 신맛과 쓴맛의 차이의 최소값을 출력한다. 🔸 코드 🔸 n = int(input()) taste = [] visit = [0] * n answer = 1000000000 for _ in range(n): taste.append(list(map(int,input().split()))) def dfs(d, m,..