이번주도 소스콘 프로젝트를 진행하였다.

 

알고리즘

1일 1알고리즘 실천

그리디를 많이 안풀었다보니 너무 못하길래 좀 풀어보는중이다.

 

소스콘 프로젝트 진행

이번주는 개발은 완료되었지만 PR을 지속적으로 요청 중이다.

다음주는 발표 준비와 마무리!

 

자율 프로젝트 팀빌딩

이번주에 벌써 싸피에서의 마지막 프로젝트 팀 빌딩을 했다.

소스콘 프로젝트를 하면서 다른 지역 교육생분들과 팀을 하였기에 팀을 새로 꾸려야하는 상황이었지만

대부분의 팀들이 특화 프로젝트에 이어서 가는 경우가 많아서 구하는데 힘들었다.

다행히도 1학기때 같은 반이었던 분이 받아주셔서 팀빌딩이 완료되었다. 감사합니다 ㅠ

 

후기

벌써 소스콘 프로젝트가 끝나가고 다음주가 발표다.

다음주에 발표준비 및 ppt 제작을 열심히 해야할 것 같다는 생각이 든다.

끝나면 바로 다음 프로젝트 준비를 위해 웹 공부를 시작해야겠다.

'잡담' 카테고리의 다른 글

10월 2주차 결산  (0) 2021.10.17
10월 1주차 결산  (0) 2021.10.10
9월 4주차 결산  (0) 2021.09.26
9월 3주차 결산  (0) 2021.09.19
9월 2주차 결산  (0) 2021.09.12

https://www.acmicpc.net/problem/13904

 

13904번: 과제

예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.

www.acmicpc.net

그리디는 많이 안풀어봐서 어렵네요..

이 문제는 정렬 + 그리디 문제입니다.

 

우선 마감일, 과제 점수를 담은 list배열을

  1. 과제 점수가 높은 순 (내림차순)
  2. 마감일이 적게 남은 순 (오름차순)

으로 정렬합니다.

 

그 다음 과제 점수가 가장 높은 0번 인덱스부터 과제를 진행합니다.

여기서 확인해야할 것은 마감일 안에 과제를 할 수 있는지에 대한 여부입니다.

d일부터 1일까지 visit[d]=true인지 확인해서 해당 일에 과제를 했는지 체크합니다.

과제를 했다면 전날 과제를 했는지 체크하는 방식으로 1일까지 확인합니다.

 

과제를 하지않은 날이 있다면 과제를 진행하고 방문체크 해주면 되고,

d ~ 1일 모두 이미 과제를 한 상태면 해당 과제를 진행할 수 없다는 뜻입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <algorithm>
#define MAX 1000
using namespace std;
typedef pair<intint> pi;
 
pi list[MAX];
bool visit[MAX + 1];
int N;
 
bool cmp(pi a, pi b) {
    if (a.second == b.second) return a.first < b.first;
    else return a.second > b.second;
}
 
void func() {
    int ans = 0;
    for (int i = 0; i < N; i++) {
        int d = list[i].first;
        for (int j = d; j > 0; j--) {
            if (visit[j]) continue;
            
            visit[j] = true;
            ans += list[i].second;
            break;
        }
    }
 
    cout << ans << '\n';
}
 
void input() {
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> list[i].first >> list[i].second;
    }
    sort(list, list + N, cmp);
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    func();
 
    return 0;
}
cs

'algorithm > Greedy' 카테고리의 다른 글

boj 16120 PPAP  (0) 2021.10.16
boj 2262 토너먼트 만들기  (0) 2021.10.16
boj 1826 연료 채우기  (0) 2021.02.22
boj 8980 택배  (0) 2021.02.16
boj 11000 강의실 배정  (0) 2021.02.16

이번주는 소스콘 프로젝트를 진행하였다.

 

알고리즘

1일 1알고리즘 실천

이제는 문자열 위주로 풀어볼 예정이다.

 

소스콘 프로젝트 진행

이번주 역시 개발을 진행하였다.

다음주부터 Pull Request, UCC, 발표준비 등을 할 예정이다.

 

후기

이번주는 추석이라 그런지 한게 딱히 없는 느낌이다.

프로젝트에서 개발은 대략 끝난것 같고, PR을 날릴 일만 남았지만 피드백을 엄청 받으면서 오래 걸릴것 같다.

이를 진행하면서 깃에 대해 많이 배울것 같다는 생각이 들고, 벌써 2주남았다는 사실이 조금 놀라웠다.

마무리 잘 해야겠다는 생각이 들었다.

'잡담' 카테고리의 다른 글

10월 1주차 결산  (0) 2021.10.10
9월 5주차 결산  (0) 2021.10.03
9월 3주차 결산  (0) 2021.09.19
9월 2주차 결산  (0) 2021.09.12
9월 1주차 결산  (0) 2021.09.05

이번주는 소스콘 프로젝트 개발을 진행하였다.

 

알고리즘

1일 1알고리즘 실천

 

소스콘 프로젝트 개발

이번주 역시 개발을 진행하였다. 

이번주는 깃에 대해 많이 배울수 있는 주였다..

 

후기

이번주는 개발에 시간을 투자하였고, 그래서인지 다른게 쓸게 없다..

개발 진행을 하면서 깃에 대해 모르는것이 많았어서 삽질도 많이 했고, 많이 배우는것 같아서 좋다.

시작한지 얼마 안된거같은데 벌써 3주밖에 남지 않아서 놀랐고, 남은기간 열심히해서 좋은 결과물 낼 수 있도록 해야겠다는 생각이 든다.

'잡담' 카테고리의 다른 글

9월 5주차 결산  (0) 2021.10.03
9월 4주차 결산  (0) 2021.09.26
9월 2주차 결산  (0) 2021.09.12
9월 1주차 결산  (0) 2021.09.05
8월 4주차 결산  (0) 2021.08.29

이번주는 소스콘 프로젝트 개발 및 학습을 진행하였다.

 

알고리즘

1일 1알고리즘 실천

플래 1에 욕심이 생겨 세그먼트 트리위주로 문제를 풀었고, 플래문제 99솔과 플래 1을 달성하였다.

 

소스콘 프로젝트 개발

저번주에 기획을 진행하였고, 이번주에는 기획대로 개발을 진행중이다.

모르는것이 많다보니 학습과 병행중이다.

 

snippet 기능 테스트

vscode-extension-samples 중에 snippet이라는 기능이 있다.

테스트하는 도중에 ini 언어를 사용하는 파일 관련해서 이상한 버그? 가 발생하였고, 팀원들의 도움을 받아 해결하였다.

안까먹기 위해 블로그에 포스팅 완료

 

후기

이번주에는 갑자기 플래 1을 달성하고싶어 알고리즘을 좀 많이해서 다음주부터는 1일1브를 실천할 것이다.

프로젝트도 벌써 중반기인데 좋은 결과물을 위해 열심히 노력해야겠다.

벌써 추석이 얼마 안남았는데 이때 놀지말고 열심히 공부해야지.. 제발

내 친구들이 매일매일 게임에 미쳐사는 모습을 매일 보고있는데 이것들을 동기삼아서 공부해야겠다..!

'잡담' 카테고리의 다른 글

9월 4주차 결산  (0) 2021.09.26
9월 3주차 결산  (0) 2021.09.19
9월 1주차 결산  (0) 2021.09.05
8월 4주차 결산  (0) 2021.08.29
900  (0) 2021.08.24

https://www.acmicpc.net/problem/1849

 

1849번: 순열

1부터 N까지의 수들이 한 번씩 쓰인 수열이 있다. 그 수열에서 i 앞에 있는 수 들 중, i보다 큰 수들의 개수를 A[i]라고 정의하자. A[i]가 주어져 있을 때, 원래 수열을 구하는 프로그램을 작성하여라

www.acmicpc.net

사탕 상자 문제와 비슷한 방법인 구간합을 이용하여 해결하였습니다.

https://emoney96.tistory.com/93 (사탕 상자 문제풀이)

 

먼저 1 ~ N 만큼의 리프노드가 모두 1로 이루어진 세그먼트 트리를 구합니다.

입력으로는 1 ~ N 까지 자신보다 왼쪽에 있는 수 중에 자신보다 큰 수의 갯수가 주어집니다.

 

가장 작은 숫자인 1부터 입력으로 주어진 자신보다 큰 수의 갯수 + 1이 되는 자리를 찾습니다.

만약 cnt[1] = 5면 1의 자리는 6이 됩니다.

자리를 찾게 되면 해당 자리의 리프노드의 값을 0으로 하고 구간 값도 갱신합니다.

이 과정을 반복한 후에 결과를 출력해주시면 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#define MAX 100000
using namespace std;
 
int list[MAX + 1], tree[(MAX + 1* 4];
int cnt[MAX + 1];
int N;
 
int init(int node, int s, int e) {
    if (s == e) {
        return tree[node] = 1;
    }
 
    int m = (s + e) / 2;
    return tree[node] = init(node * 2, s, m) + init(node * 2 + 1, m + 1, e);
}
 
void query(int node, int s, int e, int idx, int k) {
    if (s == e) {
        tree[node] = 0;
        list[s] = idx;
        return;
    }
 
    int m = (s + e) / 2;
    if (k <= tree[node * 2]) query(node * 2, s, m, idx, k);
    else query(node * 2 + 1, m + 1, e, idx, k - tree[node * 2]);
 
    tree[node] = tree[node * 2+ tree[node * 2 + 1];
}
 
void func() {
    for (int i = 1; i <= N; i++) {
        query(11, N, i, cnt[i] + 1);
    }
 
    for (int i = 1; i <= N; i++) {
        cout << list[i] << '\n';
    }
}
 
void input() {
    cin >> N;
    init(11, N);
    for (int i = 1; i <= N; i++) {
        cin >> cnt[i];
    }
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    func();
 
    return 0;
}
cs

'algorithm > SegmentTree' 카테고리의 다른 글

boj 16993 연속합과 쿼리  (0) 2022.08.29
boj 12846 무서운 아르바이트  (0) 2022.08.19
boj 14719 빗물  (0) 2021.03.15
boj 2304 창고 다각형  (0) 2021.02.25
boj 14438 수열과 쿼리 17  (0) 2021.02.21

이번주는 소스콘 프로젝트 기획과 사전 학습을 진행하였다.

 

알고리즘

1일 1브 실천 중에 오늘은 플래도 풀었다.

내가 작성한 소스코드들은 깃허브에 모두 올려놓다보니 그 쪽 잔디도 같이 심어지고 있다. ㅎㅎ이득

 

소스콘 프로젝트 기획

프로젝트를 위한 기획과 역할분담을 진행하였다.

다음 주부터 아마 개발을 진행하지 않을까 생각한다.

 

타입 스크립트 설치 및 학습

프로젝트에서 주 언어로 타입 스크립트를 쓰기 때문에 설치부터 시작해서 어떤 문법들이 있는지 학습하였다.

자바 스크립트 기반으로 이루어진 언어라서 아예 모르는 정도는 아니었지만 자바 스크립트를 잘 모르기에 어려움이 예상된다.

 

vscode-extension-samples 테스트

https://github.com/microsoft/vscode-extension-samples

여기 링크에는 vscode extension을 위한 샘플들이 올라와있다.

이 코드들을 모두 받은 다음, 필요한 기능들을 하나씩 테스트했다.

 

CS 개념 정리

cs공부 안한지 너무 오래된것 같아서 일단 정리만 조금 해놨다.

여유있을 때는 내가 정리해놓은 것을 보면서 공부를 해야겠다.

 

후기

공통 프로젝트 발표회 결과가 나왔고, 우리 팀은 반에서 1등을 하였다!

7주 동안 노력한 결과가 1등인 것에 너무 기분이 좋았고, 우리 팀원들 모두 고생많으셨습니다!ㅠ

이번주는 그래도 저번주보다는 프로젝트에 대한 이해도가 높아졌다고 해야하나? 아무튼 조금이라도 알게된것 같아서 다행이다.

샘플들을 테스트를 하면서 신기한것들이 많았고, 어떻게 돌아가는지 잘 몰라서 삽질을 엄청 많이 했던 한 주였다.

저번 프로젝트와의 공통점은 그냥 초반에 삽질을 많이한다 정도다 ㅋㅋㅠ

삽질을 한다는 것은 그만큼 크고 있다는거니까! 열심히 하겠습니다 팀원분들 ㅠ

알고리즘 포스팅을 안한지 2달이 넘었는데 여유가 되면 조금씩 해볼 생각이다.

'잡담' 카테고리의 다른 글

9월 3주차 결산  (0) 2021.09.19
9월 2주차 결산  (0) 2021.09.12
8월 4주차 결산  (0) 2021.08.29
900  (0) 2021.08.24
8월 3주차 결산  (0) 2021.08.22

TypeScript를 설치했으니 이제 실행을 테스트 해야합니다.

 

TypeScript 실행에는 두 가지 방법이 있습니다.

  1. TypeScript를 JavaScript로 변환하여 실행하는 방법
  2. TypeScript를 바로 실행하는 방법

 

간단하게 작성된 코드를 실행합니다.

 

TypeScript를 JavaScript로 변환하여 실행하는 방법

아래의 명령어를 입력하여 JavaScript로 변환합니다.

tsc test.ts

그러면 같은 폴더에 test.js라는 JavaScript 파일이 생기고

 

열어보면 TypeScript에서 작성했던 코드가 변환되어 있음을 알 수 있습니다.

이제 아래의 명령어로 test.js를 실행합니다.

node test.js

이렇게 실행이 잘되는 것을 확인할 수 있습니다.

 

 

TypeScript를 바로 실행하는 방법

구글링을 하던 도중 ts-node를 통해 실행한다는 것을 알게되어 따라 해보았습니다.

 

ts-node는 아래의 명령어를 통해 설치합니다.

npm install -g ts-node

 

그 다음 아래의 명령어로 바로 실행을 합니다.

ts-node test.ts

네 그러면 에러가 발생합니다.

이를 해결하기 위해서는 tsconfig.json 이라는 TypeScript 설정 파일이 필요합니다.

직접 작성해도 되지만 아래의 명령어를 통해 자동 생성을 하였습니다.

그러면 Successfully 메시지와 함께 tsconfig.json 파일이 생깁니다.

 

이제 ts-node test.ts로 실행합니다.

이제 실행이 잘되는 것을 확인할 수 있습니다.

'Etc' 카테고리의 다른 글

Unity Script로 카메라 Culling Mask 기능 사용하기  (2) 2021.10.29
Unity 카메라 Culling Mask  (0) 2021.10.29
TypeScript 설치  (0) 2021.08.30
Windows 10 에서 WSL을 이용한 우분투 설치  (0) 2021.08.29
C++ cout 소수점 고정  (0) 2021.08.05

TypeScript를 설치하기 위해서는 nodejs가 먼저 설치되어 있어야합니다.

 

https://nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

여기서 nodejs를 설치합니다.

 

cmd에 node -v나 node --version을 쳐서 버전이 나오면 설치가 된겁니다.

 

그 다음 밑의 명령어를 통해 TypeScript를 설치합니다.

npm install -g typescript

설치 이후에 tsc -v나 tsc --version을 쳐서 버전이 나오면 설치가 된겁니다.

 

 

혹시 vscode에서 tsc -v 입력 시 이런 에러가 발생한다면 Windows 정책으로 PowerShell 실행에 제한이 있기 때문입니다.

 

그런 경우에는 Windows PowerShell을 켜서 Set-ExecutionPolicy Unrestricted를 입력 후 y를 입력합니다.

 

그러면 버전이 잘 뜨는것을 확인할 수 있습니다.

'Etc' 카테고리의 다른 글

Unity 카메라 Culling Mask  (0) 2021.10.29
TypeScript 실행  (0) 2021.08.30
Windows 10 에서 WSL을 이용한 우분투 설치  (0) 2021.08.29
C++ cout 소수점 고정  (0) 2021.08.05
Java 문자열이 정수인지 확인  (0) 2021.06.01

이번주는 공통 프로젝트 발표회와 소스콘 프로젝트를 진행하였다.

 

알고리즘

1일 1브 실천 중에 별찍기가 재밌더라

 

공통 프로젝트 찐 마무리

원래는 저번주에 발표하고 끝난 일정이었지만 반에서 2등안에 들었고 발표를 한번 더 진행한다는 소식을 듣게 되었다.

저번주에 작성한 ppt를 수정하고, 시연 시나리오와 녹화 등으로 메인 발표자의 발표를 도와주는 시간을 가졌다.

그리고 서울지역 교육생들과 싸피 관계자분들 앞에서 발표를 하였다. (나는 메인 발표자가 아닌 도와주는 역할이었다.)

이제 진짜 마무리되었다. 다들 너무 고생하셨고, 자율때 다시 만났으면 좋겠어요..

 

소스콘 프로젝트

특화 프로젝트의 커리큘럼은 어느정도 따라가면서 소스콘 프로젝트를 진행하였다.

멘토님과의 미팅도 두 차례 가졌고, 사전공부가 많이 필요하다는 것을 느꼈다.

 

후기

지금까지 싸피에서 진행했던 프로젝트는 어느 정도 배웠거나 알고 있던 지식이 바탕되었지만 이번 프로젝트는 완전히 제로 베이스다.

말 그대로 아예 몰라서 질문조차 하지 못하는 수준이다. 마치 1학기로 돌아간 기분이랄까..

우분투도 처음 설치해서 사용해봤고, 멘토님이 말씀해주시는 것을 전혀 이해하지 못했다.

그래서 그런지 이번주는 좀 스스로가 나태하진 느낌이다. 정신차리자.

다음주는 샘플 코드를 좀 더 뜯어보면서 이해를 해야할 것 같고, 타입스크립트 공부도 병행을 해야할 필요가 있다.

'잡담' 카테고리의 다른 글

9월 2주차 결산  (0) 2021.09.12
9월 1주차 결산  (0) 2021.09.05
900  (0) 2021.08.24
8월 3주차 결산  (0) 2021.08.22
8월 2주차 결산  (0) 2021.08.15

Windows 10에 WSL이라는 Linux용 Windows 하위 시스템 기능을 이용하여 우분투를 설치하는 과정입니다.

 

먼저 Windows 기능 켜기/끄기 라는 프로그램을 실행시킵니다.

 

Linux용 Windows 하위 시스템을 체크하고 확인을 누릅니다.

 

그러면 PC를 재부팅 해라고 합니다.

재부팅을 해줍니다.

 

그 다음 Microsoft Store 앱을 켜줍니다.

 

WSL을 검색하여 Ubuntu를 설치하고 실행합니다.

 

첫 화면으로는 몇 분 동안 설치를 진행합니다.

 

그 다음 새 계정정보를 입력하면 설치가 완료됩니다!

 

 

싸피에서 우분투를 쓸 기회가 있었지만 이 부분은 다른 팀원분이 맡아주셨기에 처음이네요.

익숙해질 정도로 써봐야할 것 같습니다.

'Etc' 카테고리의 다른 글

TypeScript 실행  (0) 2021.08.30
TypeScript 설치  (0) 2021.08.30
C++ cout 소수점 고정  (0) 2021.08.05
Java 문자열이 정수인지 확인  (0) 2021.06.01
localStorage를 이용한 데이터 저장  (0) 2021.05.11

2019년 5월 14일, "단계별로 풀어보기" 라는 곳에서 문제풀기를 시작했고, 이게 나의 첫 알고리즘이었다.

 

2019 ACM-ICPC 대회를 나가기 위해 3 ~ 4개월 동안 dp, dfs, bfs만 골라서 300문제를 풀었었던 기억이 나는데 오늘 프로필 눌러보니까 900이라고 적혀있었다.

특히 내가 dp를 좋아해서 한페이지를 모두 성공으로 채우는 짓을 하기도 했다.

 

물론 작년부터 알고리즘을 쉬었던 기간이 많았어서 많이 풀지는 못했지만 그냥 예전 생각이 많이 났다.

 

근데 문제 수가 중요한게 아닌데? 헤헤..

'잡담' 카테고리의 다른 글

9월 1주차 결산  (0) 2021.09.05
8월 4주차 결산  (0) 2021.08.29
8월 3주차 결산  (0) 2021.08.22
8월 2주차 결산  (0) 2021.08.15
8월 1주차 결산  (0) 2021.08.08

+ Recent posts