import sys input=sys.stdin.readline # 반복 횟수를 입력받는다 n = int(input()) # 명령어를 저장할 list 생성 commendList = [] # 명령으로 인해 발생한 변수를 저장할 stacklist 생성 stack = [] # 입력한 n의 값만큼 반복문 실행 for i in range(n): # commendList에 명령어 입력 commendList.append(input().split()) # 만약 push 명령어가 commendList[i] 에 속해있다면 if "push" in commendList[i]: # stack 리스트에 push와 함께 입력된 숫자를 append stack.append(int(commendList[i][-1])) # 만약 pop ..
분류 전체보기
네이버 부스트 캠프의 코딩 테스트를 진행하며 알고리즘 문제를 풀다가 내가 너무 원시적인 방법으로 문제에 접근하고 있다는 생각에 자료구조에 대한 학습을 시작하였다. package list.arraylist.api; import java.util.ArrayList; import java.util.Iterator; public class Main { public static void main(String[] args) { ArrayList numbers = new ArrayList(); // Integer 형식의 ArrayList를 만든다. numbers.add(10); // 배열 끝에 내가 원하는 값을 추가하는 방법 numbers.add(20); numbers.add(30); numbers.add(40); ..
문제 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 출력 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력..
1. 2진법 2진법 컴퓨터에는 오직 0과 1로만 데이터를 표현한다. 비트 0과 1 두가지 값만 가질 수 있는 측정 단위를 비트라고 한다. 비트는 정보를 저장하고 연산을 수행하기 위해 사용한다. 수학적 연산을 수행할 수 있다. 비트열 비트 8개가 모이면 바이트가 된다. 킬로바이트는 1,000 바이트 메가바이트는 1,000 킬로바이트 기가바이트는 1,000 메가바이트 테라바이트는 1,000 기가바이트 2. 정보의 표현 문자의 표현 문자를 숫자로 표현할 수 있도록 정해진 약속 표준으로는 ASCII (아스키 코드) 가 있다. 아스키 코드는 총 128개의 부호로 정의되어 있다. 이 외에도 Unicode라는 표준에서 더 많은 비트를 사용하여 더 다양한 문자들도 표현 가능하도록 지원하고 있다. (이모지) 그림, 음악..
내인생 26년, 벌써 황금같은 20대의 절반이 지나갔다. 마이스터 고등학교를 졸업 후 병역특례를 받으며 중소기업에서 5년간 기계조작 업무를 맡았다. 매번 메뉴얼에 의거하여 반복되는 하루하루는 나에게서 창작이라는 개념을 앗아가려 했으나, 주어진 환경에서 항상 최선의 수를 생각하며 작업환경의 개선을 꾀하던 나에게 있어 그 작은 창작활동은 너무나도 소중했다. 창작을 갈망하고 내 머릿속에 있던 그림들을 실체화 시켜보고 싶었던 나는 새로운 도전을 결심하고 그동안 쌓아왔던 내 상상력을 현실화 시킬 수 있는 방탈출 사업이라는 물살에 내 몸을 내던졌다. 내 상상력이 현실이 되어가는 과정은 정말이지 황홀했다. 내가 쓴 이야기가 목재와 벽돌, 그리고 전자 설비라는 살을 붙혀 실체화 되던 과정은 나에게 완전한 몰입이란 무엇..
문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다. 출력 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라..
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 9223372036854775807 9223372036854775808 예제 출력 1 18446744073709551615 정답 솔직히 파이썬으로 알고리즘을 푸는 나에겐 너무 쉬운 문제이지만 다른 코드의 관점에서는 굉장히 까다로운 문제인 것 같다. 파이썬의 경우 int 타입의 최댓값인 2,147,483,647을 넘어가면 자동으로 long 타입으로 넘어가 문제가 없지만 자바의 경우 BigIntger 타입을 선언해 주어야 하는 번거로움이 있다. # Java의 경우 변수를 BigInteger을 선언하여 사용..
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 예제 입력 1 2 1 5 예제 출력 1 4 예제 입력 2 5 1 6 예제 출력 2 2 예제 입력 3 100 99 1000000000 예제 출력 3 999999901 정답 이 문제는 얼핏보면 굉장..
문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 정답 해당 문제의 규칙을 찾아보면 홀수 라인에선 분자가 -1씩 감소, 분모가 +1씩 증가하고 짝수 라인에선 분자가 +1씩 증가, 분모가..
변수 변수란 하나의 값을 저장할 수 있는 메모리 공간이며 변수를 선언하여 저장할 공간을 마련하여 사용한다. # 코드 package _ch02; public class Ex2_3 { public static void main(String[] args) { /* 변수에 값을 저장하는 방법은 '='기호를 사용하며 이때의 '='는 등호가 아니라 대입의 의미를 가지고 있다. */ int a = 4, b = 2; } } 변수의 값 읽어오기 = 변수의 이름을 적는다 # 코드 package _ch02; public class Ex2_3 { /** * @param args */ public static void main(String[] args) { int a = 4, b = 2; System.out.println(a ..