
전체 글
[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 1. 숫자
* 혼자공부하는컴퓨터구조+운영체제(강민철 / 한빛미디어) 책과 강의를 듣고 작성한 내용입니다 :) 컴퓨터는 0과 1로 표현된 정보만 이해할 수 있습니다. 그러면 컴퓨터는 어떻게 우리가 사용하는 숫자와 문자를 이해할 수 있을까요? 📗 숫자를 이해하는 방법 우리가 일상생활에서 사용하는 숫자는 십진수 입니다. 십진수 숫자를 컴퓨터가 이해할 수 있는 정보로 변환하기 위해 이진법을 사용합니다. 이진수는 끝에 아래첨자(2)를 붙이거나 이진수앞에 0b을 붙여 표기합니다. (이 포스팅에서는 0b을 붙여 표기하겠습니다) 십진수를 이진수로 변환 ex) 10 -> 8 + 2 -> 0b1010 7 -> 4 + 2 + 1 -> 0b111 따라서 컴퓨터에게 십진수7을 알려주려면 십진수7을 이진수로 표현한 0b111을 전달해야합니..
[TOPCODER 05.전체탐색] 09. 마법의 숫자
[풀이방법1] 1. 4개의 카드를 배열로 선언 2. 카드에 타겟 숫자 존재여부를 return 하는 check함수 생성 3. 1~16까지 숫자를 반복하며 answer의 답변과 모두 일치하는 경우의 숫자를 출력 [코드1] import java.util.Scanner; public class NumberMagicEasy1 { public static void main(String[] args) { int[] card1 = {1, 2, 3, 4, 5, 6, 7, 8}; int[] card2 = {1, 2, 3, 4, 9, 10, 11, 12}; int[] card3 = {1, 2, 5, 6, 9, 10, 13, 14}; int[] card4 = {1, 3, 5, 7, 9, 11, 13, 15}; Scanner ..
[TOPCODER 알고리즘 트레이닝] 07. 고장난 로봇
[풀이 방법] 보드의 중앙에서 탐색 시작 ⭐재귀 함수 종료 조건 가능한 이동 횟수를 모두 사용했을 때, 여기까지 온 확률을 전체 성공 확률에 더해주고 탐색 종료 ⭐탐색 로직 2-1) 동서남북 중 이미 방문했거나 이동 확률이 0이면 방문하지 않음 2-2) 방문여부를 true로 바꾸고 다음 방향으로 이동 후, 다시 돌아오면 방문여부를 다시 false로 바꿈 [풀이 코드_Java] package book; import java.util.Scanner; public class CrazyBot { static int n; static int[][] bord; static boolean[][] visited; static double[] movePro = new double[4]; static int[] dx = ..
[프로그래머스] 다리를 지나는 트럭
[풀이방법] 1. 대기중인 트럭이 순서대로 들어있는 큐 wait 생성 = 대기중인 트럭 2. 다리의 길이만큼 0이 들어있는 큐 bridge 생성 = 다리위 트럭 3. 다리위의 트럭이 모두 나갈 때까지 다음을 반복 3-1) 시간++ 3-2) 다리위의 트럭을 하나 빠져나가게함 (만약 트럭이 없다면 0이 빠져나감) -> 현재 다리위 트럭무게 = 다리위의 트럭무게 - 빠져나간 트럭 무게 3-3) 대기중인 트럭이 존재할 경우 트럭을 더 올릴 수 있으면 다음 트럭을, 아니면 0을 추가 -> 현재 다리위 트럭무게 = 다리위의 트럭무게 + 올린 트럭 무게 [풀이코드_Java] import java.util.LinkedList; import java.util.Queue; class Solution { public int..
[백준] 1065번 한수
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net [풀이 방법] 📝 1~99까지의 숫자는 모두 한수이다 📝 따라서 N >= 100 일 경우에만 1씩 증가시켜 한수인지 판별 📝 한수인지 판별하는 logic 1) 각 자리의 숫자를 배열에 저장 2) 각 자리의 숫자의 차이가 달라지는 경우 false 반환 [풀이 코드_Java] import java.util.Scanner; public class Main { public static void main(St..
[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1
https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net [풀이 방법] + 내 경우에는 Scanner방식으로 입력받았을 경우 시간초과가 발생했다 😢 1. 그래프를 입력 받은 후, 오름차순으로 방문하기 위해 연결되어 있는 인접 정점을 내림차순으로 정렬 빈 Stack에 출발지를 추가하고 Stack에 요소가 존재하지 않을 때까지 다음을 반복 2-1) 스택에서 요소를 꺼냄 2-1-1) 이..
[프로그래머스] 거리두기 확인하기
https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이 방법] 각 대기실의 자리 정보를 room 변수에 할당하고 다음을 반복 1. P인 자리를 찾는다 2. 해당 자리를 기준으로 탐색(동서남북) 시작 💫탐색 종료조건1: 파티션을 만나는 경우 -> 탐색 종료 (파티션을 거쳐 가는 곳은 어떠한 값을 가져도 상관없기 때문) 💫탐색 종료조건2: 거리가 2인 경우 -> 탐색종료 (거리가 2보다 크면 어떠한 값을 가져도 상관없기 때문) 💫탐색 종료조건3: ..
[백준] 7569번 토마토
https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net [풀이 방법] 🔅 각 단위 별 로직 ▶ 토마토가 모두 익지 못하는 상황을 판별해야함 -> 토마토를 입력받을 때, 익지 않은 토마토(0)의 개수를 세서 변수 unripe에 저장 -> 익게한 토마토의 개수를 세서 ripe 변수에 저장 -> 익게한 토마토의 개수가 익지 않은 토마토의 개수보다 작을 경우 토마토가 모두 익지 못하는 상황이므로 -1출력 ▶ 1일차에는 0일차에 익은 토..