https://www.acmicpc.net/problem/1256알고리즘 분류 : 수학, 다이나믹 프로그래밍, 조합론❓문제🔅해석'a'와 'z'의 조합으로 n번째 단어를 출력하는 문제이다.사전에는 알파벳 순서대로 수록되어 있으므로 'a'로 시작하는 문자의 조합으로 계산해본다.입력 : 2 2 6 1. a_ _ _ 'a'로 시작하는 문자의 조합 개수는 남은 3자리수와 남은 'z'의 갯수 3C2이다. 3C2 = 3이므로 'a'로 시작했을 때 3가지의 조합을 만들 수 있다.우리는 6번째(K) 순서를 원하므로 'z'로 시작한다는 것을 알 수 있다. (3C2 1) 결과값을 담는 sb에 'z'를 추가하고2) 'z' 카운트를 하나 감소시킨다.3) K의 값을 조합 수 만큼 감소시킨다. 2. z a _ _위에서 'z'로 ..
https://www.acmicpc.net/problem/1837알고리즘 분류 : 수학, 브루트포스 알고리즘, 임의 정밀도 / 큰 수 연산❓문제🔅해석K까지의 소수배열을 만들기 위해 '에라토스테네스의 체'를 활용한다.//에라토스테네스의 체 생성for (int i = 2; i 이중 for문을 돌면서 자신의 배수에 방문 체크를 하여 지워준다. 해당 소수에 암호가 떨어진다면 K보다 작은 소수로 만들어진 암호이므로 소수 배열을 돌면서 입력받은 암호를 나눠본다.주의할 점은, 암호가 10의 100승까지 입력될 수 있어 int, long으로 입력받을 수 없다.BigInteger를 사용하는 방법도 있지만, String으로 입력받아 한 글자씩 연산을 진행하는 방법도 있다.(어떤 문제에는 BigInteger 사용이 ..
https://www.acmicpc.net/problem/3955알고리즘 분류 : 수학, 정수론, 확장 유클리드 호제법❓문제🔅해석확장 유클리드 호제법 알고리즘을 이용한다. (공식 : ax+by=gcd(a,b))방정식에 적용할 a, b, c를 생각해보자면, a와 b는 입력값인 인원수, 한 봉지에 든 사탕 개수로 둘 수 있다.axby인원수인당 나눠줄 사탕 수한 봉지에 든 사탕 수사탕 봉지수ax + 1 = by 아래와 같이 항 정리를 한다.-ax + by = 1 여기서 주의할 점은, 나머지 정의가 0 그래서 a, b에 음수가 들어오지 않도록 x가 음수 값을 가지게 한다.a(-x) + by = 1 이제 확장 유클리드 호제법을 통해 s, t, r 값을 구한다.public static EGResult egcd(l..
https://www.acmicpc.net/problem/14476 알고리즘 분류 : 수학, 정수론, 누적합, 유클리드 호제법❓문제 🔅해석위 문제는 누적합과 유클리드 호제법을 이용하여 풀이해야한다. 먼저 두 수의 최대공약수를 구하는 방법인 유클리드 호제법을 구현한 코드이다.// gcd(a, b) == gcd(b, r) : r = a % bstatic int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a;} 이 유클리드 호제법을 통해 나온 최대공약수를 누적합 배열에 담는다. 8 12 24 36 48예를들어, 입력이 위와 같이 들어왔을 때, 8 ~ 48의 최대공약..
*DFS, BFS는 그래프 알고리즘에서 기초가 되는 탐색 방식으로 반드시 숙지가 필요하다. DFS깊이 우선 탐색(Depth First Search)그래프 탐색 방법의 한가지한 경로로 탐색하다 특정 상황에서 최대한 깊숙하게 들어가서 확인 후 다시 돌아가 다른 경로로 탐색하는 방식일반적으로 재귀함수를 사용하여 풀이한다.(stack을 사용하는 문제는 거의 드물다)백트레킹, 단절선 찾기, 단절점 찾기, 위상정렬, 사이클 찾기 등에 사용된다. 풀이 팁현재 방문하고 있는 노드에만 관여한다.필요한 정보(부모가 누구인지, 얼마나 걸렸는지)는 코드를 작성하다 추가하도록 한다.추가하는 방식은 1) 파라미터로 넘기기 2) static 전역 변수 선언하기 방식이 있다. 풀이 순서 (들여쓰기 주의)체크인단순 방문 여부만 체크하..
정보처리기사 때 헷갈렸던 개념을 이제서야 정리해본다.super자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다.조상 클래스로부터 상속받은 멤버도 자손 클래스 자신의 멤버이므로 super대신 this를 사용할 수 있지만 서로 구별해야하는 경우에 super를 사용하는 것이 좋다. super 예제코드1조상 클래스와 자손 클래스의 멤버 변수가 같은 경우public class SuperTest { public static void main(String[] args) { Child c = new Child(); c.method(); }}class Parent { int x = 10;}class Child extends Parent { int x = 20; void method(..
Java의 기초 개념 중에 메모리 구조를 파악하고 기억해둬야할 것 같아 기록해둔다. JVMJava Virtual Machine의 줄임말.OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터자바로 작성된 어플리케이션은 모두 이 가상 컴퓨터 (]VM)에서만 실행되기 때문에,자바 어플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.자바의 중요한 장점 중 하나인 “ Write once , run anywhere.C 한 번 작성 하면 어디서든 실행된다 )"이 가능하게 되는 것이다. 메모리구조응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. *cv(=클래스 변수), l..
--amend, --no-eidt 실수로 파일 하나를 빼버렸거나, 파일의 오타 등으로 수정이 있을 때 이전 커밋에 합치는 기능이다. --no-eidt 를 적어주면 커밋 메세지 수정을 안한다. git add filename git commit --amend --no-edit --amend와 --no-edit 옵션을 조합하여 Git의 커밋을 효율적으로 관리할 수 있다.
객체 메소드 1. Object.assign() 객체 복제 user를 복사하고 싶다고 그냥 cloneUser에 대입해서 될까? const user = { name : 'susukkang', age : 30 } const cloneUser = user; 답은 '아니다' user 변수에는 객체 자체가 들어가 있는 것이 아니라, 객체가 저장되어 있는 메모리 주소인 객체에 의한 참조값이 저장된다. 그러므로 cloneUser에는 데이터가 들어가지않고 참조값이 들어간다. Object.assign() 사용 const newUser = Object.assign({}, user); 이렇게 사용해야 newUser에 user의 값들이 복제된다. 병합1 const newUser2 = Object.assign({gender:'f..
Alpine.js🔎 HTML에 인라인 JavaScript를 사용하여 간단한 인터랙티브 웹 애플리케이션을 만들 수 있도록 도와주는 라이브러리이다. 알파인.js는 가벼우면서도 강력한 기능을 제공하며, 다른 복잡한 프론트엔드 프레임워크나 라이브러리에 비해 진입 장벽이 낮다. 공식 사이트에 사용방법이 매우 잘 나타나 있다. 공식 사이트 : https://alpinejs.dev/start-here Start Here — Alpine.js Start Here Create a blank HTML file somewhere on your computer with a name like: i-love-alpine.html Using a text editor, fill the file with these contents: ..