목록분류 전체보기 (85)
-
프레임워크소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경을 말한다.출처
여러 직사각형의 전체 면적 구하기https://www.acmicpc.net/problem/2672 문제를 푸는것도 어렵지만 자릿수 맞춰 출력하는 것도 조금 까다로운 것 같다..123456 long ans = (long)(chk(x, y)*100); if(ans%100 == 0){ System.out.println(ans/100); }else{ System.out.printf("%.2f", ((double)ans)/100); }Colored by Color Scriptercs요렇게 했을 때 백준 사이트의 테스트케이스와 codeup에서는 맞았지만 채점 결과 틀렸다고 나왔다. 123456 double ans = (chk(x, y)); if((long)ans == ans){ System.out.println((..
this참조변수로 인스턴스 자신을 가리킨다.참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼, 'this'로 인스턴스변수에 접근할 수 있다.인스턴스 멤버만 'this'에 접근할 수 있다. static메서드는 인스턴스를 생성하지 않고도 호출될 수 있으므로 static메서드가 호출된 시점에서 인스턴스가 존재하지 않을 수도 있기 때문이다. this는 생성자를 포함한 모든 인스턴스메서드에서 자신이 관련된 인스턴스를 가리키는 참조변수로 숨겨진 채로 존재한다. this - 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다. 모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재한다.this(), this(매개변수) - 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용한다. 출처 : 자바의 정석
생성자인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용됨. 조건1. 생성자의 이름은 클래스의 이름과 같아야 한다.2. 생성자는 리턴 값이 없다. 기타사항1. 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러 개의 생성자 존재 가능.2. 해당 클래스 내에 생성자가 하나도 없다면 컴파일러가 기본생성자를 추가하여 컴파일한다.3. 생성자가 하나 있다면 기본생성자 추가 안함.4. 생성자 안에서 다른 생성자를 생성하려면 this() 혹은 this(매개변수들...)을 사용하면 됨. 수행 과정1. 연산자 new에 의해서 메모리(heap)에 해당 클래스의 인스턴스가 생성됨.2. 생정자가 호출되어 수행됨3. 연산자 new의 결과로, 생성된 해당 클래스의 ..
암호코드https://www.acmicpc.net/problem/2011 언뜻 보면 쉬운 dp문제처럼 보이는데.. 예외로 처리해줘야 할 사항들이 몇가지 있다.나는 그 사항들을 체크하지 않아 엄청 많이 틀렸다. 주어진 입력이 해석 가능한 숫자조합인지 꼭!!! 체크한 뒤 제거해 줘야 한다.체크해줘야할 사항들로는1. 0으로 시작하는 경우2. 0이 연속으로 나오는 경우3. 0 앞에 3~9의 숫자가 나오는 경우4. 그리고!! 출력은 10000000으로 나눈 나머지를 출력할것! 잊지말자. 이 모든 예외들을 처리해 준 후 dp[i] = dp[i-1] + dp[i-2](S.charAt(i) > '0' && (S.charAt(i-1) == '1' || ( S.charAt(i-1) == '2' && S.charAt(i) ..
절차적 프로그래밍(Procedural Programming)- 단순히 순차적인 명령 수행이 아니라 루틴, 서브루틴, 매서드, 함수등(이를 통틀어 프로시저라고 한다.)을 이용한 프로그래밍 패러다임을 뜻한다.- Procedural은 단순히 '절차'를 뜻하는 것이 아니라 '프로시져'의 의미를 가진다. - 다시 말해 이 패러다임에서는 함수 호출을 통해서 추상화와 재사용성을 얻어내는것(프로시져 콜)이 본질이다. 특징- 시간의 관점에서 프로그래밍함. 명령어 한 줄씩 따라가며 실행됨.- 프로시저를 호출하는 것은 그냥 코드를 쓰는 것 보다 시간이 더 소모됨.(인라인 하는 것 보다 시간이 많이 걸림.)- 반복적인 일들을 모듈화함으로써 코드를 재사용할 수 있지만, 많은 경우 코드의 수정이 필요함.- 과학계산, 하드웨어의 ..
절차지향 프로그래밍함수형 프로그래밍 특징1. 코드의 재사용성이 - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.2. 코드의 관리가 - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.3. 신뢰성이 높은 프로그래밍을 가능하게 함.- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다. '코드의 재사용성이 높고 유지보수가 용이하다.'--> 프로그램의 개발과 유지보수에 드는 시간과 비용을 획기적으로 개선하였다. 절차적 프로그래밍과 비교기존 절차적 프로그래밍에서는 함수를(메소드) 기계, 데이터를 원료로 생각해서 데이터가 함수 사이를 통과하면서 차츰 순서대로 가공돼 나가는 방식..
프로그래밍에서 사용하는 모든 이름은 '식별자(identifier)'라 한다.식별자는 같은 영역 내에서 서로 구분될 수 있어야 한다.식별자를 명명할 때는 다음 규칙을 따라야 한다. 1. 대소문자가 구분되며 길이에 제한이 없다.2. 예약어를 사용해서는 안 된다.3. 숫자로 시작해서는 안된다.4. 특수문자는 '_'와 '$'만을 허용한다.5. 패키지 이름 : 모두 소문자 (예, java.util, java.awt)6. 클래스 이름 : 첫자는 대문자, 나머지는 소문자. 두 단어 이상의 합성일 때는 단어의 첫자는 대문자. 약자일 경우 이니셜은 대문자 (예, StringBuffer, InputStream, URLDecoder)7. 메소드 이름 : 모두 소문자, 두 단어 이상의 합성일 때는 두번째 단어부터 첫자는 대문..
캔디캔디https://www.acmicpc.net/problem/2878 아.. 어렵다 처음에 생각한 풀이법은50 1011062534789이런 입력이 주어졌다고 할 때, list[]에 저장한 뒤 sort를 하고 이분탐색으로 left mid right 12345678910 50 -> 16 left mid right 0000123456 16 -> 1 left mid right 0000000123 위의 그림과 같이 왼쪽 범위의 숫자들을 0으로, 오른 쪽 범위의 숫자들은 list[mid]의 숫자만큼 빼주며 이분탐색을 진행하려 했으나숫자가 작을 때, 과연 어느 숫자를 줄여줘야 할지...이 경우에는 3을 1 줄이는 것이 최선이라는 것을 딱 알 수 있지만 다른 복잡한 경우는 어떻게 처리해야 할지 고민하다 결국 해결하..
밑변을 공유하는 두 개의 직각삼각형의 빗변 a, b와, 빗변이 교차하는 지점의 높이 h가 주어졌을 때밑변의 길이 w를 구하고 싶다? A = Math.sqrt(a*a-w*w);B = Math.sqrt(b*b-w*w);이라고 할 때 h = (A*B)/(A+B)를 만족하는 w를 찾으면 된다! =>다른 풀이...두 삼각형을 좌표평면으로 가져왔을 때,빗변을 직선의 방정식으로 나타내면빗변 b는 빗변 a는 이렇게 나타낼 수 있다. 여기서 적절한 x값(binary search로 찾아갈 수 있다.)을 통해 w를 구할 수 있음