목록전체 글
Step-by-Step

JAVA는 Class를 이용하여 객체를 만드는데, C++은 Class가 있음에도 불구하고 다들 Struct를 사용하는 걸까 일단 구조는 비슷하다 (거의 똑같음) 중요한 차이는 접근제어자에 있다. 접근제어자 private : 동일 클래스 내에서만 접근 가능 protected : 해당 클래스와 상속받은 파생 클래스에서만 접근 가능 public : 어디서든 접근 가능 ※ 참조 : JAVA는 package 개념이 있지만, C/C++은 없다. Class vs Struct Class : private이 default Struct : public이 default 예를 들어보자 클래스 객체를 생성하고, 메소드를 이용하여 값을 가져오는 코드이다. private 멤버라 접근할 수 없다고 나온다. 해결 이런식으로 publi..
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net DP 느낌이 나는 문제! 근데 조건은 벽 문을 1번만 부술 수 있다는 것이다. N*M 격자에서 DP 값을 저장하는데, 매 위치마다 벽을 부수고 온 경우 1와 벽을 부수지 않고 온 경우 0 별로 각각 최소값을 구해주었다. DP[행 index] [열 index]에 벽 부쉈는지에 따라 다르게 체크하기 위해 3차원으로 하나 더 넣어주었다. ※ 크기 선언 : DP[N][M][2] ..
https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 투포인터 사용하는 문제이다. 처음에는 연속된 b값이 가장 많은 것을 기준으로 옆에 붙이려고 했는데, bababa 이런 경우는 맨 앞의 b를 두번째 b와 세번째 b사이에 넣는 작업 한 번만 해주면 연속적이게 된다. ※ 방법 a의 개수를 구한 후, 연속적인 a 범위 내에서 내부에 있는 b의 개수가 최소인 경우를 구하면 된다. 0~aCnt / 1~(aCnt+1) / .. → 이런식으로 투 포인터 사용 코드..
Java만 쓰다가 C / C++ 중에 하나를 선택해야 하는 순간이 왔을 때, C++를 선택한 건 정말 잘 한 결정이었다. 함수 기반 C언어와 달리 객체 지향인 C++은 Java를 잘 알고 있으면 금방 이해하고 다룰 수 있는 것 같다. ※ 다만 JAVA는 대부분 Pascal 표기법을 사용하는데, C++은 대부분 스네이크 표기법이다. ex) JAVA → PriorityQueue // C++ → priority_queue Struct struct Person { int h, w, idx; Person(int height, int weight, int index) : h(height), w(weight), idx(index) {} bool operatorh w < p.w) return..
https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net N 범위가 100까지인것도 모르고 DFS 사용했다가 큰일날뻔 했다...😅 재귀함수 호출은 Stackoverflow를 유발하니 조심하자 (밑 링크 참조) http://www.tcpschool.com/c/c_memory_stackframe 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 이 문제는 배낭 채우기랑 비슷하다...
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스는 문제 유형이 뭔지 알려준다. Hash 쓰는거길래 재밌을거 같아서 시도해보았다. ※ TIP Comparable을 꼭 이용하자!!!!!! https://smile-development.tistory.com/92 Comparable 사용하기 List 같은 곳에 요소들을 넣을 때, 매번 비교하고 넣으면 코드가 너무 지저분해진다. 그럴때 사용하는거 Comparable! Comparable 객..

옛날에 포스팅한 적 있었는데,,, 옛날이라 이해가 많이 부족한게 보였다. 그래서 다시 작성한 Comparable Comparator! List 같은 곳에 요소들을 넣을 때, 매번 비교하고 넣으면 코드가 너무 지저분해진다. 그럴때 사용하는거 Comparable & Comparator! Comparable 객체 간 비교를 가능하게 해주는 인터페이스 (→사용시 구현해야 함) 구현한 클래스는 반드시 compareTo(T o) 메소드를 정의해야 함 compareTo(T o) T : 객체 타입 내가 만든 특정 기준으로 정렬하고 싶다!! compareTo 메소드 이용하자 하지만! 글자만 보면 뭔소린지 모르니까 밑에 예제를 보자 Student 클래스 class Student { String name;// 이름 int ..

https://www.acmicpc.net/problem/11758 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net 코드를 짤수록 예외가 많아지고,, 이것저것 추가하다가 가독성이 떨어질때는 ,, 나도 모르는 공식이 있나 찾아보는게 도움이 되는거같다ㅎㅎ CCW는 수학 기벡 시간에 배운 벡터 외적과 물리시간에 배운 오른손의 법칙이랑 관련이 있다 고등학교때 배웠던 공식이지만 벌써 N년이 지난 이야기........ CCW 알고리즘 (CounterClo..
https://www.acmicpc.net/problem/9376 9376번: 탈옥 상근이는 감옥에서 죄수 두 명을 탈옥시켜야 한다. 이 감옥은 1층짜리 건물이고, 상근이는 방금 평면도를 얻었다. 평면도에는 모든 벽과 문이 나타나있고, 탈옥시켜야 하는 죄수의 위치도 나타 www.acmicpc.net 이번엔 맞겠지..? X 10 번 하면서 풀었던 문제... 생각하기 어려웠다! ㅋㅋ 풀고 보니까 난이도가 플레티넘4더라ㅜㅜ 감옥에서 죄수 2명을 꺼내기 위해 열어야 하는 문의 최소 개수를 구해야한다. 느낌적인 느낌으로 BFS를 사용해야 하는 것을 알 수 있다. 문제에서 주어진 3가지 # : 문 * : 벽 $ : 죄수 대충 방법을 설명하면 이렇다 외부인(상근이)가 감옥 밖과 안에서 각 위치마다 열어야 하는 최소 ..
문제를 풀다보면 특정 값으로 나눈 나머지값을 구하라는 문구를 많이 접하게 되었다. 자료형 범위를 넘어가지 않도록 조건을 제시해 준 것인데, 만약 전체 곱의 나머지를 구하라고 하면, 전체 곱이 나오기 전에 오버플로우가 발생할 수 있다. 이때 사용하는 것이 모듈러 연산이다. 모듈러 연산 (Modular Arithmetic) 어떤 한 숫자를 다른 숫자로 나눈 나머지를 구하는 연산 모듈러 합동 (Modular Congruent) 두 A,B 숫자가 M을 모듈러한 결과 값이 같다면 모듈러 합동관계라고 한다. A mod M = b mod N A ≡ B mod M 모듈러 합동식 A = B + K * M (K는 정수) 이 식에서 B를 이항하게 되면, A - B = K * M 두 정수 A, B와 양의 정수 M에 대해 다음..