전체 글 107

[백준/C++] 1753번 최단경로

🤔문제 이해 시작점에서 각 정점을 방문하기 위해 필요한 최소 비용을 구하는 문제이다. 💡첫번째 아이디어 문제가 그냥 딱 다익스트라 문제라 다익스트라를 이용했다. 🔥풀이🔥 다익스트라를 그대로 구현하였고, 다음 정점까지의 거리를 우선순위큐에 넣어주기 전에 이미 그 정점까지 최소거리보다 크면 큐에 넣어주지 않고 continue를 해주었다. 그리고 우선순위큐에 들어있는 정점이 이미 최소거리가 확정되었다면 그 때에도 continue를 해줘서 불필요한 연산을 줄여주었다. 아래는 제출한 코드이다. #include #include using namespace std; #define INF 100000000 int dist[20002], v, e, k; int main() { cin.tie(nullptr); cout.t..

백준/C++ 2022.07.15

[백준/C++] 14888번 연산자 끼워넣기

🤔문제 이해 중복이 존재하고, 순서에 상관있게 나열하는 연산자 순열의 모든 경우에 대해 계산한 값의 최솟값과 최댓값을 찾는 문제이다. 💡첫번째 아이디어 브루트 포스, 즉 모든 경우의 수를 찾아보고 계산해 비교해봐야 최솟값과 최댓값을 찾을 수 있겠다고 생각했다. 모든 경우를 트리 모양으로 나타내보면 n번째 연산 다음에 올 수 있는 연산들은 n번째 연산이라는 공통된 값을 가지고 연산을 수행하므로 DFS를 이용해 풀면 될 것 같았다. 계산 결과나 계산 도중에 나오는 값들은 정수형인 int의 범위 안에 들어가므로 변수는 int로 선언하고, N의 범위가 11 이하이므로 이 아이디어로는 시간 초과 걱정은 없음! 🔥풀이🔥 main에서 +, -, x, / 를 각각 한번씩 dfs 함수를 실행시켜 준다. dfs함수는 연산..

백준/C++ 2022.07.13

[공부/Java] 자바의 main() 메소드, 예외, 예외 처리, try-catch-finally, 예외 클래스

main() 메소드 자바 응용 프로그램의 실행 시작 메소드 public static void main(String[] args){} main()메소드의 인자 전달 c:> java Hello 3 5.7을 수행하면 Hello class의 main메소드의 args에 3과 5.7이 전달됨 args[i]로 배열 형태로 접근 가능 이클립스에서 main 메소드의 인자 전달 Run -> Run Configurations -> Arguments 탭에서 Program arguments 칸에 값을 넣으면 args로 넘어감 자바의 예외 컴파일 오류 문법에 맞지 않게 작성된 코드 컴파일 시 발견 예외(Exception) 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류 ex) 정수를 0으로 나누는 경우, 배열보다 ..

공부/Java 2022.07.11

[공부/Java] 자바의 배열, 선언, 생성, 초기화, 인덱스, 치환, 공유, 크기, for-each문, 리턴

배열 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조 같은 타입의 데이터들이 순차적으로 저장 배열의 선언과 생성 배열 선언 데이터타입 배열이름[]; 배열 생성 배열이름 = new 데이터타입[배열크기]; 선언과 함께 초기화 int intArray[] = {0,1,2,3,4,5,6}; //초기화된 값의 개수만큼의 배열 생성 2차원 배열 배열이름 = new 데이터타입[배열크기1][배열크기2]; int intArray[][] = {{0,1,2,3}, {4,5,6,7}}; 데이터타입 배열이름 [][]; '배열이름'은 배열에 대한 레퍼런스 변수를 의미 배열 인덱스와 원소 접근 C와 마찬가지로 배열의 인덱스를 통해 원소에 접근 가능 0

공부/Java 2022.07.11

[백준/C++] 1790번 수 이어 쓰기 2

🤔문제 이해 1부터 N까지 숫자를 이어써서 만든 수의 k번째 자리의 숫자를 구하는 문제! 문제가 짧은 만큼 간단했다. 💡첫번째 아이디어 간단하게 생각했을 때 N의 자릿수가 n일 때 새롭게 만들어지는 수는 1*9 + 2*90 + 3*900 + ... (n-1)*((10^n -1)-(10^n-2))에 가장 작은 n자리 수부터 n까지를 더하면 구할 수 있을 것이라고 생각했다. k를 찾을 때에는 k가 포함되는 곳이 몇 자릿수일 때인지를 파악해서 최악의 경우 10000000~9999999까지 탐색하므로 시간 제한에 걸리지 않을 것이라고 판단했다. 🔥풀이🔥 첫번째 반복문 -> k가 포함되는 자릿수 구하기 두번째 반복문 -> 해당 자릿수의 최솟값~최댓값까지 total에 자릿수를 더해주면서 k가 포함되는 범위를 찾고 ..

백준/C++ 2022.07.11

[백준/C++] 16936번 나3곱2

🤔문제 이해 다음 값이 현재 값을 3으로 나눈 값이거나 2를 곱한 값으로 나열되어 있는 수열을 뒤섞어 놓은 게 입력으로 주어지고, 뒤섞기 전의 형태를 찾는 문제이다! 💡첫번째 아이디어 주어진 예제1에서는 N이 6이고 수열 B는 4 8 6 3 12 9였다. 각 숫자별로 이전에 올 수 있는 값(*2하기 전, /3하기 전 값)과 다음에 올 수 있는 값(*2한 후, /3한 후)을 적어보았다. 이전과 이후에 올 수 있는 값이 명확해 보여서 해당 방법을 가지고 구현해봤다. 해당 문제의 정답을 저장하는 자료구조는 앞 뒤로 넣고 뺄 수 있는 list를 사용하였다. list를 채워넣기 위해 입력 값을 저장하는 배열을 0부터 n-1까지 for문으로 돈다. list가 비어 있는 경우 이전에 올 수 있는 값과 다음에 올 수 ..

백준/C++ 2022.07.10

[백준/C++] 15558번 점프 게임

💡첫번째 아이디어 일단 보자마자 BFS임을 알았다! 일단 갈 수 있는데는 다 가보는데 안되면 끝인거니까 간단하게 map이라는 2차원 배열을 사용하여 두개의 지도를 표현해 주었고, BFS의 큐에는 몇초가 지났는지를 의미하는 cnt, 현재 지도의 위치를 나타내는 idx, 어떤 지도인지를 나타내주는 map_num의 정보를 담고 있는 pair 형태로 구성해주었다. 간단하게 +1, -1, 반대편 +k이므로 해당 지도의 값이 1이고, 사라지지 않은 idx일 경우에 큐에 넣어주고 idx가 n보다 커졌을 때 1을 출력하고 그렇지 않고 큐가 다 비게 되면 0을 출력한다. ❌첫번째 제출(4%에서 틀렸습니다) 예제 출력은 잘 나왔는데 제출해보니 틀렸다고 떴다. 문제를 다시 읽어보니 지도에서 먼저 이동하고 cnt가 커지는 방..

백준/C++ 2022.07.07

[공부/Java] 자바 키보드 입력 - Scanner

System.in 키보드로부터 직접 읽는 자바의 표준 입력 스트림 키 값을 문자가 아닌 바이트로 리턴하므로 응용프로그램이 문자 정보로 변환해줘야 함 Scanner java.util.Scanner 클래스 System.in에게 키를 읽게 하고, 읽은 바이트를 다양한 타입으로 변환하여 리턴해주는 클래스 공백 문자 ('\t', '\f', '\r', '\n' , ' ' )로 구분되는 아이템 단위로 읽음 키보드 입력 처리 과정 키보드 입력 -> 바이트 표준 입력 스트림 -> 바이트 스트림 -> Scanner -> 문자로 변환 -> 자바 응용 프로그램 Scanner의 주요 메소드 메소드 설명 String next() 다음 토큰을 문자열로 리턴 byte nextByte() 다음 토큰을 byte타입으로 리턴 short ..

공부/Java 2022.07.04

[공부/Java] 자바의 데이터 타입, 리터럴, var, 상수, 타입 변환, 수식연산자, 조건문, 반복문

기본 타입 실제 데이터 값을 저장하는 타입 기본 타입 메모리 사용 크기 값의 범위 boolean 1byte true / false char 2bytes '\u0000' ~ 'uFFFF' byte 1byte -128 ~ 127 short 2bytes -32,768 ~ 32,767 int 4bytes -2,147,483,648 ~ 2,147,483,647 long 8bytes -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 float 4bytes 1.4E-45 ~ 3.4028235E38 double 8bytes 4.9E-324 ~ 1.7976931348623157E308 boolean 자바가 데이터를 다루는 최소 단위가 1byte라서 낭비여도 그냥 1byte..

공부/Java 2022.07.04

[공부/Java] 자바 프로그램 기본 구조, 식별자, 식별자 원칙, 관습

기본 구조 클래스 class 키워드로 선언 파일명은 반드시 public class 이름과 동일하게 설정 외각에 클래스 하나 이상 존재 메소드 C/C++에서의 함수와 동일한 의미 클래스 내부에만 작성 가능 main 메소드 main()에서 실행 시작 public static void main (String[] args){ } 변수 선언 변수 타입과 변수 이름 선언 메소드 내에 선언된 변수는 지역 변수 메소드 외부에 선언된 변수는 전역 변수 식별자(Identifier) 클래스, 변수, 상수, 메소드 등에 붙이는 이름을 의미 식별자의 원칙 특수문자(@, ! ..)와 공백, 탭은 식별자 사용 X _, $은 사용 O, 첫번째 문자로 사용도 가능하지만 잘 안씀 유니코드 문자 사용 O 한글 사용 O 식별자의 첫번째 문..

공부/Java 2022.07.04
728x90