목록분류 전체보기 (103)
Vienna

https://school.programmers.co.kr/learn/courses/30/lessons/120896?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◇ 문제 설명 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다. ◇ 제한사항 0 < s의 길이 < 1,000 s는 소문자로만 이루어져 있습니다. ◆ 풀이 지난 번에 이미 풀어본 문제다. 지난 번에는 ..
같은 실수를 반복하기보다는 실수에서 배우는 것이 좋고, 그보다 더 좋은 것은 남의 실수로부터 배워 유사한 실수를 저지르지 않는 것이다. ◇ 프로그래밍 대회에 참가한 사람들이 흔히 저지르는 실수 중 대표적인 것 ◆ 산술 오버플로 변수의 표현 범위를 벗어나는 값을 사용하는 경우. ◆ 배열 범위 밖 원소에 접근 이 실수를 예방하는 가장 좋은 방법은 (당연하게도) 배열의 크기를 정할 때 계산을 신중하게 하는 것. ◆ 일관되지 않은 범위 표현 방식 사용하기 배열의 잘못된 위치를 참조하는 오류가 발생하는 큰 원인 중 하나. 프로그램 내에서 범위의 표현 방식으로 *닫힌 구간과 **열린 구간을 섞어 쓰는 경우가 있다. *닫힌 구간: 양 끝의 경계를 포함하는 구간 **열린 구간: 양 끝의 경계를 포함하지 않는 구간 대부..

◇ PriorityQueue Queue 인터페이스의 구현체 중의 하나. 저장한 순서에 관계 없이 우순선위가 높은 것부터 꺼내게 된다는 특징이 있다. 그리고 null 또한 저장할 수 없다! (null을 저장하려 시도한다면 nullPointerException이 발생.) 저장 공간을 배열로 사용하며, 각 요소를 힙(heap) 자료구조의 형태로 저장한다. import java.util.*; public class Main { public static void main(String[] args) { Queue pq = new PriorityQueue(); pq.offer(3); // 오토 박싱이 일어난다. pq.offer(new Integer(3)); pq.offer(1); pq.offer(4); pq.offe..

◇ Properties HashTable을 상속받아 구현한 것으로, (String, Stirng) 형태로 저장하는 보다 단순화된 컬렉션 클래스. 주로 애플리케이션의 환경설정과 관련된 속성(Property)을 저장하는데 사용되며, 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공한다. 그래서 간단한 입출력은 Properties를 활용하면 몇 줄의 코드로 쉽게 해결될 수 있다. ◇ 눈 여겨볼 함수 get 함수 get(String key): 키에 해당하는 값 반환. 없으면 null get(String key, String defaultValue): 키에 해당하는 값 반환. 없으면 defaultValue Properties에 저장 setProperty(String key, String value): 지정된 키와..

◇ TreeMap 이름에 Tree가 붙은 만큼 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장 검색에 관한한 대부분의 경우 HashMap이 TreeMap보다 더 뛰어나므로 HashMap을 사용하는 것이 좋다. 다만 범위 검색이나 정렬이 필요한 경우에는 TreeMap을 사용하자. ◇ 자주 찾을만한 함수 Key 찾기 ceilingKey(Object key): key와 일치하거나 큰 key 중 제일 작은 key를 반환. 없으면 null floorKey(Object key): key와 일치하거나 작은 key 중 제일 큰 key를 반환. 없으면 null higherKey(Object key): 지정된 key보다 큰 key 중에서 제일 작은 key를 반환. 없으면 null lowerKey(Object..

◇ 삼각비 삼각비는 내각의 크기에 따라 세 변의 비가 어떻게 정해지는지 나타낸 것. 직각삼각형에서 직각이 아닌 한 각이 정해지면 세 변의 길이의 비도 정해진다. 기준이 되는 각은 아래 그림에서 ∠A, ∠B 둘다 가능하겠지만, 보통 수학에서는 ∠A의 위치를 기준으로 하여 삼각비를 나타내기로 약속하였으며, 이를 기준각이라고 한다. 비 비의 값 비의 이름 표기법 높이 : 밑변 = a : b a/b 탄젠트 tan θ 밑변 : 빗변 = b : c b/c 코사인 cos θ 높이 : 빗변 = a : c a/c 사인 sin θ 위 그림을 토대로하면 다음과 같은 수식을 얻을 수 있다. $$\sin\Theta = \frac{\overline{CP}}{\overline{OP}}=\overline{CP}=\overline{O..

◇ 삼각형의 코사인법칙 A좌표는 삼각함수의 정의에 따라 x좌표는 b cos θ, y 좌표는 b sin θ이다. https://vienna.tistory.com/75 11장) 삼각함수와 복소수 - 삼각함수 ◇ 일반각? 특정 크기 하나를 Θ라고 할 때, 다음과 같이 일반화하여 나타낼 수 있다. 아래 수식에서 Θ는 대개 1회전 이내의 값을 택한다. $$(360\,^{\circ}\times n)+ \Theta (n \in Z)$$ ◇ 호도법? 호에 의해 vienna.tistory.com 그리고 피타고라스의 정리에 따르면 선분AB의 경우 다음과 같은 식을 가질 수 있다. $$\overline{AB} =c=\sqrt{(a-b\cos\Theta)^2+(0-b\sin\Theta)^2}=\sqrt{(a^2-2ab\cos..
◇ 코딩의 중요성을 간과하지 말 것. 프로그래밍 대회에서 좋은 성적을 올리기 위한 비결은 읽기 쉬운 코드를 작성하는 것이다. ◇ 좋은 코드를 짜기 위한 원칙 일반적으로 실무에서 좋은 코드의 원칙이라고 할만한 것들 또한 대부분 프로그래밍 대회에도 적용된다. ◆ 간결한 코드 작성하기 코드가 짧을수록 오타나 단순한 버그가 생길 우려가 줄어들고, 디버깅도 쉬워지기 때문. 하지만 프로그래밍 대회에서 사용이 권장되는 방식은 다음과 같다. 전역 변수의 광범위한 사용 C/C++의 매크로 사용 Java 및 C#의 foreach 구문 사용. 회사에서 내가 사용하는 C#의 경우 foreach를 사용할 때 그냥 for문에 비해 GC가 더 많이 불리기 때문에 실제로 잘 사용하지 않고 있지 않다. ◆ 적극적으로 코드 재사용하기 ..

◇ 문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. ◇ 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. ◇ 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. ◆ 풀이 빈도수 구하기 문제다. HashMap을 통해 입력받을 때부터 기록을 해둔다면 빠르게 해결할 수 있을 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp..

https://www.acmicpc.net/problem/2830 2830번: 행성 X3 상근이는 초등학교 졸업 여행으로 외계 행성 X3에 방문했었다. 이 행성에 사는 사람들의 이름은 모두 자연수이다. 행성의 거주민은 모두 서로를 알고 있다. 두 X3인은 그들의 친밀도를 자신의 이 www.acmicpc.net ◇ 문제 상근이는 초등학교 졸업 여행으로 외계 행성 X3에 방문했었다. 이 행성에 사는 사람들의 이름은 모두 자연수이다. 행성의 거주민은 모두 서로를 알고 있다. 두 X3인은 그들의 친밀도를 자신의 이름을 이진수로 바꾸어서 계산한다. 두 이름을 이진수로 바꾸고, 자리수가 짧은 쪽을 기준으로 정렬한다. 이때, 두 이진수의 각 자리 아래에 두 자리가 같으면 0을, 다르면 1을 적는다. 이 결과 이진수를..