목록전체 글 (104)
Vienna
Layout Group은 자식 오브젝트 (이하 요소) 를 일정한 비율로 나열하고 싶을 때 사용한다.그 요소들이 세로로 나열되기를 원한다면 Vertical, 가로로 나열되길 원한다면 Horizontal 을 사용한다.그럼 각 프로퍼티가 어떻게 사용되는지 확인해보자.Padding: 레이아웃 그룹 내부에 가지는 여백. 요소가 얼마나 부모의 외곽 사이즈에 가깝게 위치할 것인지를 정함.Spacing: 각 요소 사이에 가지는 여백.Child Alignment: 공간을 꽉채우지 못했을 때 요소의 정렬 방식Control Child Size: 레이아웃 그룹이 요소의 가로/세로 사이즈를 조절할 지 여부true: 레이아웃 그룹이 요소의 preferredWidth/Hiehgt 값 읽어서 크기 설정 이게 체크 되어야 Conten..
벡터(vector)란? 크기와 방향을 모두 가진 물리량. 벡터는 흔히 화살표로 표현. 크기: 화살표의 길이 방향: 화살표의 방향 벡터의 위치와는 무관하게, 크기와 방향이 같으면 동일한 벡터로 간주. 한 지점에 두 개의 물리량이 작용했을 때, *합력은 두 물리량의 크기 뿐만 아니라 방향도 더해주어야 한다. * 합력: 한 물체에 둘 이상의 힘이 동시에 작용할 때, 이 힘들과 같은 효과를 내는 하나의 힘 두 물리량(벡터)의 합(sum) = 합성 벡터 두 벡터를 결합시키는 규칙 = 벡터 합의 평행사변형 법칙 (parallelogram law) → 즉, 합성 벡터에는 교환 법칙이 성립함을 알 수 있다. 스칼라 곱 벡터에 실수를 곱하는 연산: 벡터의 크기를 확대하거나 축소(Scaling) 원점 O를 시점으로 (a1..
◇ 버블 정렬 앞에서부터 값의 크기를 비교하여 1. 오름차순일 경우에는 뒤에 가장 큰 값을 배치하고, 2. 내림차순일 경우에는 뒤에 가장 작은 값을 배치하는 정렬 알고리즘. import java.util.*; public class Main { public static void main(String[] args) { int[] arr1 = {3, 5, 2, 7, 1, 4}; buffleSort1(arr1); System.out.println("[버블 정렬] 방식1 = " + Arrays.toString(arr1)); int[] arr2 = {3, 5, 2, 7, 1, 4}; buffleSort2(arr2); System.out.println("[버블 정렬] 방식2 = " + Arrays.toString(..
◇ 문제 웹사이트에서 대부분의 게시판(공지사항등)들은 콘텐츠를 모두 보여줄 수 없기 때문에 페이징 처리를 합니다. (아래 이미지 참조) 예를 들어, 전체 글의 개수가 127개라고 하고 한 페이지에서 보여지는 글의 목록이 10개라고 할때 페이지 블럭의 개수도 10개가 보여진다고 할때 전체 페이지의 모양은 아래와 같습니다. 이러한 페이지네비게이션의 html 코드를 출력하는 페이지네비게이션을 구현해보세요. 초기에 결정되는 값들은 전체 개시글 수 한 페이지당 보여지는 글의 수 페이지네비게이션에서 보여주는 블럭수 현재 페이지번호 현재 페이지번호에 해당하는 번호는 다른 페이지번호와 구분되어야 합니다. import java.io.*; public class Main { static final String newLin..
◇ 문제 다음 조건에 맞는 프로그램을 작성해 보세요. 나의 좌표 값을 입력 받습니다. (입력은 순서대로 x값, y값을 받습니다.) - 이후, 임의의 좌표 값을 입력 받습니다.(역시, x값, y값을 입력 받습니다.) - 임의로 입력된 좌표 값 중 동일한 좌표 값을 입력하는 경우는 저장하지 않고 다시 입력하도록 합니다. - 입력 받은 값이 10개가 되는 경우, 입력 받은 좌표 값과 나의 좌표 값의 거리 중 가장 가까운 좌표 값을 화면에 출력하는 프로그램을 작성해 보세요. 예를 들어, 나의 좌표 값이 1, 1 이고 임의로 입력받은 좌표 값들이 (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), (11, 11) 일 때 나와 가장 가..
◇ 문제 그림에 보이는 웹브라우저 화면은 자바의 환경 정보를 html의 테이블 구조로 출력한 화면입니다. 아래 조건에 맞게 property.html 파일을 만드는 코드를 작성하세요. [조건] 자바의 시스템 속성과 파일 저장 코드는 샘플 코드를 참조해 주세요. 출력결과의 파일은 웹브라우저로 확인해서 정상적으로 표시되어야 합니다. html파일을 작성할 때 테이블에 라인이 표시되도록 head 태그에 style태그 추가(샘플 코드 참조) ◆ 문제 해결 나는 아직 Java로 html 파일을 만드는 방법을 알지 못한다. 그래서 나는 구글링을 해보았다. 어떤 블로그 포스팅이 가장 이 문제를 해결하는 것이 적합할까, 찾아보던 중 다음과 같은 글을 발견했다. https://velog.io/@mingsomm/%EC%9E%..
https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net ◇ 문제 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 규완이를 위한 깜짝 선물을 준비했다. 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다. 동호는 가능하면 가장 짧은 문자열을 만들려고 한다. 동호가 만들 ..
https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net ◇ 문제 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. ◇ 입력 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. ◇ 출력 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. ◆ 풀이 서로 연결되어있는 데이터들이 주어지고, 이를 연결한 뒤 부모 노드를 출력하면..
https://school.programmers.co.kr/learn/courses/30/lessons/120908 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◇ 문제 설명 문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요. ◇ 제한사항 1 ≤ str1의 길이 ≤ 100 1 ≤ str2의 길이 ≤ 100 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다. ◆ 풀이 크게 풀이를 작성할 것도 없이, contains 함수를 사용하면 빠르게 해결..
https://www.acmicpc.net/problem/5613 5613번: 계산기 프로그램 입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출 www.acmicpc.net ◇ 문제 덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기 프로그램을 만드시오. ◇ 입력 입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출력한다. 주어지는 수는 108 이하의 양의 정수이다. 계산 중 결과는 0 또는 음수가 될 ..
https://school.programmers.co.kr/learn/courses/30/lessons/120844?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◇ 문제 설명 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요. ◇ 제한사항 3 ≤ numbers의 길이 ≤ 20 direction은 "left" 와 "right" 둘 중 하나입니다. ◆ 풀이 여러가지 방..
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을 적는다. 이 결과 이진수를..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net ◇ 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 ..
https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◇ Description 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 ..
https://school.programmers.co.kr/learn/courses/30/lessons/120813?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◇ Description 정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요. ◇ 제한사항 1 ≤ n ≤ 100 ◆ 풀이 먼저 배열의 사이즈를 정한다. 짝수일 때에는 n/2, 홀수일 때에는 n+1한 값에 나누기 2를 하면 개수를 구할 수 있다. 그리고 값을 2씩 증가시키면서 더한 값을 넣어주면..
◇ 직관과 체계적인 접근 문제 해결 전략에서 문제와 답의 구조에 대한 *직관을 강조해야 한다. * 해당 문제를 해결하는 알고리즘이 대략적으로 어떤 형태를 가질지를 짐작할 수 있게 해준다. ◇ 체계적인 접근을 위한 질문들 ◆ 비슷한 문제를 풀어본 적이 있던가? 이전에 사용했던 방법과 비슷한 접근 방법을 사용할 것이라 예측할 수 있다. 문제를 분류하는 방법을 익히고, 각 알고리즘들이 어떤 경우에 사용될 수 있는지 체계적으로 공부해야 한다. 즉, 그 동작 과정과 원리를 완전히 이해하고 있어야 한다. ◆ 단순한 방법에서 시작할 수 있을까? 일단 시간과 공간 제약을 생각하지 않고 문제를 해결할 수 있는 가장 단순한 알고리즘을 만들어 보는 것도 괜찮다. => 어렵게 푸는 실수를 예방! ◆ 내가 문제를 푸는 과정을 ..
◇ 삼각함수 간의 관계 ◆ sin θ 단위원에서 점 P의 y좌표에 해당. θ 0 P(+, +) π/2 P(-, +) π P(-, -) 3π/2 P(+, -) 2π sin θ 0 + 1 + 0 - -1 - 0 ◆ cos θ 단위원에서 점 P의 x좌표에 해당. θ 0 P(+, +) π/2 P(-, +) π P(-, -) 3π/2 P(+, -) 2π cos θ 1 + 0 - -1 - 0 + 1 ◆ tan θ 단위원에서 점 P의 y/x좌표에 해당. θ 0 P(+, +) π/2 P(-, +) π P(-, -) 3π/2 P(+, -) 2π tan θ 0 + 정의 안 됨 - 0 + 정의 안 됨 - 0 삼각함수 사이에는 피타고라스의 정리에 의해 다음 관계 성립. $$x^2+y^2= \overline{OP} ^2=1$$..
https://www.acmicpc.net/problem/24174 24174번: 알고리즘 수업 - 힙 정렬 2 2 5 1 4 3(heapify(A, 2, 5)) -> 2 3 1 4 5(heapify(A, 1, 5)) -> 1 3 2 4 5(A[1] A[5]) -> 5 3 2 4 1(heapify(A, 1, 4)) -> 2 3 5 4 1(A[1] A[4]) -> 4 3 5 2 1(heapify(A, 1, 3)) -> 3 4 5 2 1(A[1] A[3]) -> 5 4 3 2 1(heapify(A, www.acmicpc.net ◇ 문제 오늘도 서준이는 최소 힙 기반 힙 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 ..
◇ Description 운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다. 예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다. 현재 실행 ..