전체 글 257

그래프

그래프: 정보들의 관계를 이용해서 정리한 자료구조다node: 그래프에서 표현하고자하는 주체(=vertex, 정점)edge: 관계를 나타낸 선(=간선)간선에 화살표의 유무에 따라: 유향 그래프 / 무향 그래프간선에 저장된 값: 간선의 가중치사이클: 어떤 노드를 출발해 간선을 두 번 이상 지나지 않고 원래 노드로 돌아오는 경로예제 - 구슬크기무게가 서로 다른 n개의 구슬이 있다. 편의상 1번~n번 구슬이라고 하자. 우리는 양팔 저울을 이용해서 어떤 두 구슬에 대해 어떤 구슬이 더 무거운지 측정할 수 있다. k번 측정한 결과가 주어질 때, 자신이 몇번 째로 큰지 정확하게 알 수 있는 구슬은 몇 개인지 구하여라n=8, k=9122344765 풀이

Study/기초 2021.10.09

Baekjoon1065: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 추상화 1) N은 자연수이다 2) 각 자리 수의 숫자를 얻어내야 한다 3) 각 자리 수가 등차수열을 이뤄야한다 제한조건과 확장성 판별 욕심이 들었다. 1000이 아니라 훨씬 큰 숫자들의 한수를 구할 수 있을까? 제한조건은 다음과 같았다 1) 숫자가 커지면 자리 수가 커진다. 각 자리를 구하기 위한 연산을 계속할 수 있는가? 2) 등차수열 판별을 하기위한 각 자리끼리의 연산도 많아진다 위 제한조건에 따..

Study/Baekjoon 2021.10.09

Baekjoon4673: 셀프 넘버, 논리 배열과 StringBuilder의 사용

이 글을 포스팅하기 위해 StringBuilder를 정리했다: https://devyoseph.tistory.com/38 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51..

Study/Baekjoon 2021.10.08

Java: StringBuilder의 사용

String의 단점 서로 다른 문자열 변수 두 개가 있고 그 둘을 더한다고 하자 String str1 = "Hello"; String str2 = "World"; str1 + str2는 "HelloWorld"가 되고 이 둘과는 연관없는 새로운 String 변수에 값이 저장된다. 즉, String 연산은 메모리의 낭비가 일어나기 쉽다(불변immutable 객체의 한계성) StringBuilder: String의 단점 보완 StringBuilder를 사용하면 추가적인 인스턴스를 생성없이 문자열의 연산을 수행한다. 기존의 데이터를 참조하는 방식인데 이로 인해 문자의 삽입과 삭제가 자유롭다. 하지만 StringBuilder가 곧 String은 아니다. 연산 이후 String으로 변환해주어야 한다(toString..

Study/Java 2021.10.08

큐: 먼저 들어간 것이 먼저 나가는 구조상황으로 이해한다a라는 일을 하고 있는데 a가 끝나면 b를 하라는 지시가 왔다a가 끝나지 않은 상황에서 할 일을 모두 마치면 c를 하라는 지시가 왔다a가 끝나지 않은 상황에서 할 일을 모두 마치면 d를 하라는 지시가 왔다a가 끝났다. 다음의 할 일은?FIFO(First In First Out)라고 한다큐는 보통 관모양으로 설명한다관은 양쪽이 뚫려있다. a, b, c순으로 들어왔을 때 pop을 두번하면 c만 남는다투 포인터, 슬라이딩 윈도우를 사용할 때 자주 사용하는 개념이다예제 - 원형테이블원에서 제거하는 방식으로 할 수도 있다.하지만 로직이 분명하지 않다는 단점이 있다큐를 사용해서 풀면 로직이 분명해진다원은 끝으로 가면 순서가 초기화 되는데 이 점을 이용하는 것..

Study/기초 2021.10.08

스택

컴퓨터는 자료를 효율적으로 처리하기 위해 여러 방식으로 저장하고 사용한다 ex)스택, 큐 그래프, 트리 등스택: 먼저 들어온것이 나중에 나오는 자료구조우리가 a라는 일을 하고 있다이 일을 마치기 전에 b라는 일을 해달라고 연락이 왔다b를 마치기 전에 c라는 일을 해달라고 연락이 왔다c를 마치기 전에 d라는 일을 해달라고 연락이 왔다d를 끝냈다. 어떤 일을 해야할까?LIFO(Last In First Out)이라고 부른다스택은 컵모양으로 설명한다컵모양으로 위 예시를 설명하면, 위에서부터 d, c, b, a가 된다용어 정리push: 스택에 값을 넣는 것pop: 스택의 가장 위의 값을 제거top: 스택 가장 위에 있는 값예제 - 인터넷 브라우저인터넷 브라우저의 뒤로 가기, 앞으로 가기 기능은 스택을 이용해서 구..

Study/기초 2021.10.08

비트와 바이트

1. 비트와 바이트컴퓨터는 하드웨어적인 이유로 10진법이 아닌 2진법을 사용한다.메모리 구조에서 2진수가 어떻게 저장되는지 알아보자어릴적 나눗셈을 기억하여 13을 2진수로 나타내어라1) 비트: 2진수 한 칸 한 칸을 비트(bit)라고한다2) 바이트: 비트가 8개가 되면 바이트(byte)다3) 표현의 범위: 1바이트는 2^8=256개의 숫자를 나타낼 수 있다. 표현범위는 음수를 포함하는 것을 주의한다(-128~127)4) 정수의 표현: 보통 4바이트를 사용한다(약 42억개, -21억~21억) 2. 2진수의 음수표현법: 비트를 뒤집고 1을 더한다1) 2진수의 덧셈을 먼저 이해한다2) 더해서 0이 되면 해당 수의 음수가 된다3) 표현의 한계성을 이용한다: 더해서 표현할 수 없는 자리수로 올려버리고 값을 삭제시..

Study/기초 2021.10.07

Cannon Game_day12: (2021.10.7) 인트로 화면 리뉴얼

인트로 화면 리뉴얼 일러스트를 인트로 화면으로 도입하는 것에 대해 고심했다 결국 인트로 화면을 다시 만들고 메인 모듈을 새로 만들었다 작업시간이 좀 길었다. 코드 길이도 길었다. 영상부터 업로드했다 보스 이펙트 코딩 일정 타이머마다 공은 커지고 특정 시간에 도달하면 지우기를 반복하며 반짝이는 효과를 가진다 draw(ctx, boss){ this.x = boss.movingX+this.stageWidth/11; this.y = boss.movingY; this.ballX += this.vx; this.ballY += this.vy; if(this.pattern == 0){ this.timer ++; if(this.timer >= 150){ this.radius = this.stageWidth/40; ctx..

CSS: 너비와 높이가 100%일 때 가운데 정렬과 세로정렬, 요소 겹치기

화면 중앙에 버튼을 만들고 싶을 때가 있다 정가운데로 정렬할 수 있는 방법들을 생각해보았다 가로정렬과 세로정렬... 결국 난장판이 되었다 display속성을 꼭 사용하지 않아도 된다: position과 z-index 속성의 활용 position은 요소를 겹칠 때 사용하는 속성이다 하지만 어느 때는 옮겼지만 뒤로 가버리는 사태가 발생한다 겹칠 때 보여줄 우선순위를 정해주는 속성이 바로 z-index이다 방법은 다음과 같다 1) position: absolute; //절대 위치로 변환하고 2) top: 50%; left 50%; //퍼센트로 중앙 배치를 실현한다 3) z-index = 1; //우선순위를 1순위로 만든다 *flex, table등 많지만 여기선 다루지 않는다 .first{ background-..

Study/HTML, CSS 2021.10.07