생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q10799.java 쇠막대기의 정보와 레이저의 정보를 준다. 레이저는 무조건 ()로 표시된다. '('는 쇠막대기의 시작을 ')'는 쇠막대기의 끝을 의미한다. 쇠막대기가 놓아져 있을때 '()' 즉 레이저를 만나면 쇠막대기가 쪼개진다. 쇠막대기와 레이저의 정보를 주었을 때 총 몇 조각의 쇠막대기가 나오는지 구하여라. 처음 생각어디서 풀어본 문제라 생각해서 찾아보니 SW Expert에서 풀어본 문제였다.▶ [SW Expert] 5432. 쇠막대기 자르기 다음 생각문제 분류가 Stack이기도하고, 기존에 풀이는 변수로 관리해주었으므로 이번엔 Stack으로 관리해보았다.▶ 변수..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q9012.java 괄호의 짝이 맞는지 판단하여 맞다면 'YES' 맞지 않다면 'NO'를 출력하여라. 처음 생각꼭 Stack으로 풀지 않아도 상관없지만 분류가 Stack으로 되어있으므로 구현하여 풀었다. '('가 들어온다면 push를 ')'가 들어온다면 pop을 해주었다. ')'가 들어왔을 때 Stack의 size가 0이면 짝이 맞지 않는걸로 판단하였다.▶ 모든 기능이 필요한게 아니므로 push, pop, size만 구현하였다. 방안1) Java 풀이 12345678910111213141516171819202122232425262728293031323334353637383..
생각주어진 a와 b를 더한 값을 출력한다. a b는 a,b 형태로 주어진다. 처음 생각Java에서는 splite(",")을 이용하여 접근할 수 있었다. C++에서는 getline()을 이용해서 cin의 종료시점을 ,로 정해줄 수 있다.▶ getline(cin,a,',');를 통해서 ','를 만나면 입력을 종료시킬 수 있다.▶ 원래 getline()은 \n를 만나면 종료되기 때문에 b의 입력은 getline(cin,b)로 받아올 수 있다. 다음 생각string으로 받은 값을 int형으로 변환시켜 주어야한다. C++은 string일 경우 stoi(value)를 통해서 string을 int형으로 변환 시킬 수 있다.▶ Java는 Integer.parseInt(value)를 이용하였다. 방안1) 구분자를 이용한..
C++의 namespace namespace는 효율적인 코드의 작성을 위해서 등장한 개념입니다. 큰 프로젝트가 진행될 경우 여러 팀에서 한 프로그램을 만들것입니다. 이 때, 서로다른 팀에서 만든 코드에 gogo()라는 함수가 중복되어 있다면 어떨까요? 합쳐서 사용하기 위해서는 한 쪽의 함수를 모두 바꿔주면 될 것 같지만 큰 프로젝트에서 모두 수정하기에는 힘들 것이고 함수의 이름이 바뀌면 그 의미를 반영하는것도 바뀌기 때문에 곤란해 질 수도있습니다.이 때, namespace를 적용해주면 각 함수를 영역접근연산자인 '::'를 사용해서 접근할 수 있습니다. 간단한 예를 보겠습니다. namespace A로 ex() 함수를 감싸주었습니다. 이제 함수 ex()를 호출하려면 ::를 통해 접근을 해주어야합니다. 123..
C++에서의 입출력 PS 풀이를 위해 가장 중요한 입력과 출력입니다. Java에서는 Scanner를 주로 사용하였다면 C++에서는 무엇을 사용할 까요?바로 cin 과 cout입니다. 특히, 이 cin과 cout은 알아서 타입을 추론하여 결과를 반영해 주기 때문에 사용자가 따로 타입변환을 해줄 필요가 없다는게 큰 장점인것 같습니다. cin과 cout을 사용하기위해서는 iostream이라는 헤더 파일을 include 시켜주어야합니다. 1#include 입력을 받아보겠습니다. 1234567#include int main(){ int a; std::cin>>a; return 0;} scanf와 비교해서 아주 간단하게 입력을 받을 수 있습니다!! 이제 입력받은 값을 출력해보겠습니다. 12345678#include..
Why C++? 우선, 예전에 C를 배운적은 있으나 몇 년이 지난지금 생각은 많이 안나고 C++과 C의 문법차이가 있으므로 C를 다시 보기보다는 C++을 보기로 마음을 먹었습니다. PS(Problem Solving)를 하시는 분들 중에서도 C++로 풀이를 하시는 분들이 굉장히 많습니다. 고수분들이 해논 풀이를 따라해보려면 C++을 알면 좋을겁니다ㅎㅎ (제 생각에는 Java를 사용해도 큰 불이익은 없다고 생각합니다. 고수분들 중에서도 Java만 사용하시는 분들도 계시구요!) 로봇쪽이나 임베디드 쪽에서는 C++이나 C를 이용해서 SW를 만들고 있습니다. 작은 HW 단에서 속도의 차이는 무시할 수 없어서 그런것 같습니다. 실제로 Java를 구동하는 JVM도 내부는 C나 C++로 이루어져 있다고 합니다. 아직 ..
생각입력으로 주어진 a와 b를 더한 값인 a+b를 출력한다. 처음 생각C++을 공부하면서 cin에 대한 내용을 위해 글을 썼습니다. Java의 경우는 Scanner의 다음 읽을것이 있나를 따져주는 hasNext()를 통해 입력의 끝을 알 수 있었지만 C++의 경우는 어떻게 해야할까 생각을 해보다 답을 보았습니다.▶ C++의 경우 반복문이 positive값이 들어가면 true로 판단을 해주기 때문에 반복문 조건을 cin>>a>>b;로 넣어주면 값이 있을경우만 반복문이 작동하게 됩니다. 방안1) Java 풀이 123456789101112import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q2839.java N을 준다. 3kg과 5kg의 설탕 봉지를 이용해서 N을 만들 때 최소의 개수를 사용하는 경우를 구하여라. N을 만들 수 없을 경우 -1을 출력한다. 처음 생각이전에 풀어본것 같아서 검색을 해보니 풀어본 적이 있긴했었다. 보지는 않고 푼 후 비교를 해보니 접근 방식이 달리지긴 했다.([알고리즘/백준] - [문제] 백준 2839번(설탕 배달))▶ 이전엔 그리디 적으로 수식으로 접근했었다. 다음 생각이번에는 DP로 접근해서 풀이를 했다. N까지 접근을 하면서 3kg 짜리로 N에 접근할 수 있는 N-3에서의 값과 5kg 짜리로 N에 접근할 수 있는 N-5에서..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1700.java 멀티탭의 꼿을 수 있는 개수와 사용되어야할 기기가 순서대로 주어진다. 멀티탭에서 제품을 뽑는것을 최소화 할 때, 몇 번 뽑아야하는지 출력하여라. 처음 생각콘센트의 꼽을 수 있는 수도 100개 꼽는 기기의 수도 최대 100개이다. 수가 작으므로 다 살펴보면서 진행을 하였다.▶ 현재 꼿혀있는데 똑같은게 들어올 경우는 바로 다음 기기를 봐도 상관없으므로 HashSet을 이용해서 꼿힌 기기들을 관리해 주었다. 다음 생각꼿혀있지 않을경우 2가지로 나눠진다. 1) 콘센트에 자리가 없을경우 2) 콘센트에 자리가 있을경우 로 나눠진다.▶ 1)의 경우는 HashSet에..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q11000.kt 최소한의 강의실로 모든 강의를 들을 수 있도록 하여라. 강의실의 수업이 끝나자마자 바로 다음 강의를 시작할 수 있다. 처음 생각이전에 풀어본 [백준] 1931번 회의실배정 보다 살짝 어려워졌다. 접근은 비슷한 방식으로 진행하지만 처리를 해주어야하는 부분에 있어서 고민을 조금 하였다.▶ 회의실 배정처럼 한 개의 방이아닌 다양한 방을 처리해 주어야하므로 일찍 끝나는 회의실을 우선적으로 처리를 해주었고, 끝나는 시간이 같을 경우에는 시작 시간이 빠른 순서대로 처리를 해주었다. 다음 생각하나의 방이 사용중이면 새로운 방을 늘려주어야한다. List를 가지고 구현..
- Total
- Today
- Yesterday