728x90
반응형

전체 글 552

[오픈소스 소프트웨어 프로젝트] 1. DB 엔티티 설계 및 테이블 설계

https://wonsjung.tistory.com/463 [2022년 2학기] 오픈소스 소프트웨어 프로젝트 2022년도 2학기 교내 수업으로 오픈소스 소프트웨어 프로젝트 수업을 수강하였다. 하나의 주제를 정해 한 학기 동안 팀 프로젝트를 진행하는 수업이었다. 비록 성적은 30명 중 30등을 하였지만 얻 wonsjung.tistory.com 해당 게시글에서 소개했듯이 지금까지 진행했던 프로젝트를 정리해보려고 한다. 우선, 프로젝트 목적에 맞게 어떻게 데이터베이스 엔티티를 설계했는지 정리해보고자 한다. 아직 데이터베이스 설계에 대한 공부와 고민이 더 필요하기에 부족한 부분이 많이 존재할 것이다. 추가적인 공부를 진행하게 되면서 내가 설계했던 엔티티에 대한 문제점을 발견하게 된다면 그거에 대한 최적화와 수정..

2022/2022-2 2023.01.03

[C/C++] 백준 - 13701번 (중복제거) ; 비트마스킹/비트집합

https://www.acmicpc.net/problem/13701 13701번: 중복 제거 문제: N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때, 0 ≤ Ai < 225 = 33554432, i=1,2,…,N. 입력의 개수 N은 1 www.acmicpc.net 문제 문제: N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때, 0 ≤ Ai < 225 = 33554432, i=1,2,…,N. 입력의 개수 N은 1 이상 500만 이하이다. 입력 첫째 줄에 A1, ..

BOJ/비트마스킹 2022.12.31

비트마스크를 이용한 에라토스테네스의 체

소수 구하기 알고리즘으로 유명한 에라토스테네스의 체는 굉장히 빠르게 동작한다. 그렇기 떄문에 수행 범위를 늘릴 때 부담이 되는 것은 수행 시간이 아닌 메모리이다. 체를 구현할 때는 범위 내의 각 정수가 지워졌는지 여부를 저장해야하는데, 이 부분을 원래는 불린 값 배열을 이용해 표현하는 것이 대부분이다. 32비트 정수가 표현할 수 있는 범위 내의 모든 수에 대해 체를 수행한다고 가정하면 불린 값 배열을 사용하기 위해 4기가바이트의 메모리가 필요하다. 짝수를 제외해 2기가바이트로 줄일 수도 있지만, 여전히 적지 않은 메모리 양이다. 이 때 비트마스크를 사용하면 메모리 사용량을 8분의 1로 다시 줄일 수 있다. MAX_N개의 원소를 갖는 불린 값 배열을 다음과 같은 배열로 대체한다. unsigned char ..

비트마스크를 이용한 집합의 구현

비트마스크의 가장 중요한 사용 사례는 집합을 구현하는 것이다. 이 표현에서 N비트 정수 변수는 0부터 N-1까지의 정수 원소를 가질 수 있는 집합이 된다. 이때 원소 i가 집합에 속해 있는지 여부는 2^i을 나타내는 비트가 켜져 있는지 여부로 나타낸다. 예를 들어 여섯 개의 원소를 갖는 집합 {1, 4, 5, 6, 7, 9}을 표현하는 정수는 754임을 다음과 같이 알 수 있다. 2^1 + 2^4 + 2^5 + 2^6 + 2^7 + 2^9 = 10 1111 0010(2) = 754 비트마스크 연산을 이용해 이 집합을 어떻게 조작할 수 있는지 알아보자. 피자집 예제 토핑을 골라 주문할 수 있는 피자집의 주문 시스템이 있다. 이 피자집에는 0부터 19까지의 번호를 갖는 스무 가지의 토핑이 있으며, 주문시 토..

접미사 배열 - 맨버/마이어스의 알고리즘

다양한 문자열 문제를 해결하기 위해서는 접미사 배열(suffix array) 자료구조를 이해해야한다. 접미사 배열은 어떤 문자열 S의 모든 접미사를 사전순으로 정렬해 둔 것이다. 이 말 그래도 모든 접미사들을 문자열 배열에 저장하면 문자열 길이의 제곱에 비례하는 메모리가 필요하기 때문에, 대개 접미사 배열은 각 접미사의 시작 위치를 담는 정수 배열로 구현된다. 예를 들면 아래 표는 문자열 "alohomora"의 접미사 배열 A[]와 각 위치에서 시작하는 접미사들을 보여준다. i A[i] S[A[i] ..] 0 8 a 1 0 a l o h o m o r a 2 3 h o m o r a 3 1 l o h o m o r a 4 5 m o r a 5 2 o h o m o r a 6 4 o m o r a 7 6 ..

[C/C++] 백준 - 1701번 : Cubeditor [KMP 알고리즘]

https://www.acmicpc.net/problem/1701 1701번: Cubeditor Cubelover는 프로그래밍 언어 Whitespace의 코딩을 도와주는 언어인 Cubelang을 만들었다. Cubelang을 이용해 코딩을 하다보니, 점점 이 언어에 맞는 새로운 에디터가 필요하게 되었다. 오랜 시간 고생한 www.acmicpc.net 문제 Cubelover는 프로그래밍 언어 Whitespace의 코딩을 도와주는 언어인 Cubelang을 만들었다. Cubelang을 이용해 코딩을 하다보니, 점점 이 언어에 맞는 새로운 에디터가 필요하게 되었다. 오랜 시간 고생한 끝에 새로운 에디터를 만들게 되었고, 그 에디터의 이름은 Cubeditor이다. 텍스트 에디터는 찾기 기능을 지원한다. 대부분의 에..

[2022년 2학기] 오픈소스 소프트웨어 프로젝트

2022년도 2학기 교내 수업으로 오픈소스 소프트웨어 프로젝트 수업을 수강하였다. 하나의 주제를 정해 한 학기 동안 팀 프로젝트를 진행하는 수업이었다. 비록 성적은 30명 중 30등을 하였지만 얻어가는 것이 훠어어어어얼씬 많다고 느껴서 아무렴 상관없다. 내가 준비를 덜 해서 시험을 못보고 데모를 잘 못해서 30등을 하였다고 생각하지 다른 사람들보다 개발 실력이 못해서 30등을 했다고는 생각하지 않는다. 정신승리일 수도 있지만 난 그렇게 생각해야지 총 10팀이 있었고 다른 팀들은 대부분 pygame 라이브러리를 사용하여 프로젝트를 진행하였다. 우리팀과 다른 한 팀 총 2팀만 웹 프로젝트를 진행한 것으로 알고있다. 우리도 pygame프로젝트를 진행해도 상관 없었지만 내가 팀원들한테 이왕 할 거 멀리 보고 남..

2022/2022-2 2022.12.21

스프링의 디자인 패턴

※ 디자인 패턴 디자인 패턴은 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션을 말한다. 모든 패턴에는 간결한 이름이 있어서 잘 알려진 패턴을 적용하고자 할 때 간단히 패턴 이름을 언급하는 것만으로도 설계의 의도와 해결책을 함께 설명할 수 있다는 장점이 있다. 디자인 패턴은 주로 객체지향 설계에 관한 것이고, 대부분 객체지향적 설계 원칙을 이용해 문제를 해결한다. 패턴의 설계 구조를 보면 대부분 비슷한데, 그 이유는 객체지향적인 설계로부터 문제를 해결하기 위해 적용할 수 있는 확장성 추구 방법이 대부분 두 가지 구조로 정리되기 때문이다. 하나는 클래스 상속이고 다른 하나는 오브젝트 합성이다. 따라서 패턴의 결과로 나온 코드나 설계 구조만 보면 대부..

[JAVA] 배열 복사 (얕은 복사(Shallow copy), 깊은 복사(deep copy)

배열은 한 번 생성하면 크기를 변경할 수 없기 때문에 더 많은 저장 공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 항목 값들을 복사해야 한다. 배열 간의 항목 값들을 복사하려면 ①for문을 사용하거나 ②System.arraycopy() 메소드를 사용하면 된다. 1. for문으로 배열을 복사하는 코드 public class ArrayCopyByForExample{ public static void main(String[] args){ int[] oldIntArray = {1, 2, 3}; int[] newIntArray = new int[5]; for(int i=0;i

JAVA 2022.10.28

[C/C++] 백준 - 14658번 : 하늘에서 별똥별이 빗발친다

https://www.acmicpc.net/problem/14658 14658번: 하늘에서 별똥별이 빗발친다 첫째 줄에 네 정수 N, M, L, K가 주어진다. (1 ≤ N, M ≤ 500,000, 1 ≤ L ≤ 100,000, 1 ≤ K ≤ 100) N은 별똥별이 떨어지는 구역의 가로길이, M은 세로길이, L은 트램펄린의 한 변의 길이, K는 별똥별의 수를 www.acmicpc.net 문제 “오빠! 나 얼마만큼 사랑해?” “널 위해서라면 저기 저 하늘의 별이라도 따다 줄 수 있어. 지금 따줄까?” “에이, 거짓말!” “정말이야. 한 번 봐봐!” 욱제는 하늘을 발로 차버렸다. 그랬더니 정말 별이 떨어졌다. 그런데, 정말로 별이 지구로 떨어지기 시작했다. 욱제는 지구를 지키는 정의의 용사가 되기로 결심했다..

BOJ/완전탐색 2022.10.03
728x90
반응형