전체 글
- 8월 1주차 결산 2022.08.08
- 7월 4주차 결산 2022.08.01
- 7월 3주차 결산 2022.07.24
- 7월 2주차 결산 2022.07.17
- 7월 1주차 결산 2022.07.11
- SSAFY 6기 실습코치 회고 2022.07.10 4
- 6월 5주차 결산 2022.07.04
- boj 2295 세 수의 합 2022.06.28
- 6월 4주차 결산 2022.06.26
- 6월 3주차 결산 2022.06.19 2
- 6월 2주차 결산 2022.06.12
- GitLab -> GitHub Mirroring 2022.06.12
8월 1주차 결산
7월 4주차 결산
7월 3주차 결산
알고리즘
1일 1알고리즘
내일이면 365일..!
후기
대체 언제하나 싶었던 취업을 하게 되었다.
처음 1일 1알고리즘을 시작했을 때, 1년정도 했을 땐 취업할 수 있을지 생각했었는데 1년 되는날에 첫 출근을 하니 기분이 이상하다..
스타트업에 가게 되면서 내가 해야할 일도 많고, 공부해야할 것도 많기 때문에 힘들겠지만 그만큼 많은 경험을 쌓을 것이다.
ssafy 1학기 때 퇴소 생각했던 내가 ssafy 덕을 많이 보게 되었는데 참 세상일 모르는 것 같다. 그대로 퇴소했더라면.. 뭐하고 지냈을라나
Spring 스터디는 스터디원 개인 사정으로 잠시 중단하였고, 재정비의 시간을 갖기로 했다.
당분간 스터디를 진행하지는 않겠지만 공부는 꾸준히 하려고 한다.
이제 다음주부터는 현업에 적응하기 위한 노력이 필요하니 집중 해야겠다.
7월 2주차 결산
알고리즘
1일 1알고리즘
Spring 스터디 준비
AOP 파트를 맡아서 개념 및 pdf 내용 정리를 했다.
하지만 이번주 스터디는 스터디원 개인 사정으로 진행하지 않았고, 다음주 진행할 예정이다.
후기
어제.. 이사를 했다.
생각보다 짐이 많이 없어서 금방 끝났지만 처음 독립이라 많은 것들이 처음이다.
내일 전입신고 및 확정일자 마무리할 예정이다. 드디어 서울 사람이 되려고 한다..!
7월 1주차 결산
알고리즘
1일 1알고리즘
후기
오랜만에 본가 내려가서 부모님 쓰시라고 PC 교체 해드리고, 장비도 대부분 바꿨다.
좀 오래전부터 했어야했지만 지금이라도 해서 다행이다. 대부분의 시간은 친구를 만나거나 휴식을 취했다.
오늘 다시 집으로 올라왔고, 이번주에는 이사갈 예정이니 준비 잘해야겠다.
SSAFY 6기 실습코치 회고
나는 SSAFY 5기 교육생으로 1년 교육을 마치고 수료를 했다.
그리고 6기 실습코치로 5개월 간 활동을 했다.
우선 코치를 지원한 이유는 나의 개념들을 교육생들에게 공유할 수 있고, 그 과정에서 내가 얻을 수 있는 부분이 많을 것이라고 생각했다.
실습코치 활동을 통해 지금까지 배웠던 부분을 복습하고, 개념을 완성해야겠다는 생각이 컸다.
우선, 실습코치 선발 기준은 잘 모르겠다.
성적이 좋더라도 떨어질 수 있고, 성적이 좋지 않더라도 태도가 좋거나 SSAFY 활동을 활발하게 했다면 될 수 있다.
나는 성적 우수상과 3번의 프로젝트 우수상을 받았지만 떨어졌었고, 추가합격이 되었다.
OJT 기간에서 실습코치의 업무나 보고서 작성 요령 등 적응을 위한 시간을 가졌고,
교육생을 알려줘야 하는 입장이므로 명세서 학습을 했다.
특히, 공통 프로젝트는 교육생들이 처음 프로젝트를 접하는 기간이라 기술적으로 부족함이 많을 시기이고,
Git, Jira 등 대부분이 처음이라서 질문을 가장 많이 하는 시기다. 그래서 준비를 많이 해야한다.
답을 바로 알려주기보다는 답을 찾을 수 있도록 가이드를 제공하는 것이 실습코치의 역할이며, 생각보다 어려웠다.
그리고 교육생들과 처음 만나는 시간인 자기소개 시간에서 나에 대해 소개를 했고, SSAFY 내외에서 얻은 성과들을 소개했다.
(역시나 알고리즘에서 반응이 제일 좋더라)
실습코치가 평가에 관여하는 부분이 있기 때문에 교육생들과 사적인 교류는 최대한 자제하려고 했다.
우선 나이가 노출될 수 있는 백준 아이디부터 가려야 했고, 블로그, 깃허브 등 나를 유추할 수 있는 부분을 공개하지 않으려고 했다.
실습코치 활동이 마무리 되었을때 알려준 교육생들도 있었지만 어떻게 알고 깃허브 팔로우를 한 교육생들이 있어서 신기했다.. 어케했지 근데
아무튼 첫 프로젝트인 공통 프로젝트
시작부터 Git, Jira, 명세서 관련해서 질문이 많이 들어왔다.
공통된 질문이 많아 내용 정리해서 반 미팅 시간에 데일리컨텐츠를 진행하기도 했다.
특히, Git, Jira는 교육생 때 배운 것이 많았고, 많이 사용하기 위한 노력을 했기에 데일리컨텐츠로 한번 해야겠다는 생각을 했다.
그리고 나와 같은 반을 맡게 된 팀장코치를 맡은 분이 WebRTC나 배포 부분에서 많은 도움을 줘서 다행이라고 생각했다.
사실 나는 교육생 때 WebRTC 프로젝트를 진행했지만 내가 맡은 파트는 아니었고, 배포도 내 담당이 아니었기에 막히는 부분이 많았다.
그리고 첫 프로젝트에서 처음 다루는 WebRTC와 배포였기에 교육생들의 질문이 쏟아지는데 팀장 코치님이 없었더라면 멘탈이 나갔을 것이다.
특화 프로젝트는 빅데이터, 블록체인 등 어려운 주제를 다루는 프로젝트다.
그리고 나는 교육생 때 특화 프로젝트 대신 SSDC 프로젝트를 진행했기에 특화 프로젝트 주제에 대해 전혀 이해하지 못한 상태였다.
그래서 명세서 학습 시간에 집중을 해야 했고, 부족했던 배포도 시도했어야 했다.
하지만 공통 프로젝트가 끝나자마자 코로나에 걸려 명세서 학습에 집중하지 못했고, 초반에 팀 미팅에 참여하지 못해 주제나 팀 분위기 파악부터 힘들었다.
그래서 교육생들의 기술적인 질문에 대답하기 어려웠고, 주변 실습코치들의 도움을 많이 받았다.
개인적으로 아쉬웠던 프로젝트였고, 교육생들에게 많은 도움을 주지 못해 죄송하다.
자율 프로젝트는 팀장 코치를 맡았고, 반 배정을 받지 않았다.
그래서 자유롭게 다른 반 미팅에 참여하였고, 휴가를 사용한 코치의 대체 업무를 수행하였다.
SSAFY 내에서의 마지막 프로젝트인 만큼 질문이 거의 없었고, 팀 미팅도 적었다.
이 기간동안 취업준비를 가장 많이 하였고, 가장 별일이 없었던 프로젝트였다.
내가 교육생들을 보면서 가장 중요하게 생각한 부분이 학습 태도다.
온라인이므로 웹엑스 미팅에 제 시간에 들어와서 카메라를 키는 것이 기본이며, 중요하다고 생각했다.
하지만 그렇지 않은 교육생들이 많아서 아쉬웠던 부분이 있었다.
여러번 얘기를 했지만 카메라를 키지 않는 교육생이 많아 사무국에 보고를 드린 적도 있었다.
회고
실습코치 활동 이전부터 걱정했던 것이 두 가지가 있다.
먼저 기술적인 부분이다.
내가 담당하지 않은 것들, 그리고 담당한 부분이라도 이해하지 않고 넘어간 부분들이 많았고, 답변하기 어려운 질문이 많았다.
그래도 완벽주의 성격이라서 끝까지 알아보려고 했고, 최대한 교육생들이 이해하기 수월하도록 자세하게 답변하려고 했다.
코칭을 잘하지는 못했지만 최선을 다했다고는 자신있게 말할 수 있어 다행이다.
그 다음은 나의 극 I적인 성격이다.
실습코치는 교육생들이 편하게 생활할 수 있도록 먼저 다가가서 분위기를 풀어주는 역할이 필요하다고 생각한다.
하지만 나는 MBTI에서 I중에 극 I이고, 이런 역할을 잘 수행할 수 있을지 걱정부터 되어 처음에는 실습코치 지원조차 망설였었다.
활동 당시에는 실습코치라는 역할에 내 성격을 맞추기 위한 노력을 했고, 어느정도 변화가 있었다고 생각한다.
앞으로도 사회생활 하면서 변화하려고 노력중이다.
SSAFY 실습코치로 활동하면서 많은 팀들이 기억난다.
우선 분위기 좋은 팀이 많았다. 분위기가 너무 좋아 세 번의 프로젝트 모두 같은 팀을 할 정도였다.
심심하면 미팅 놀러오라면서 잡담을 나누었던 팀도 있었다.
처음 일을 하는거라 많이 어색하고 어려웠지만 먼저 다가와준 팀이었고, 덕분에 적응하는데 큰 도움이 되었다.
그리고 프로젝트에 진심이라서 진행 속도가 미치도록 빠른 팀도 있었고, 새벽 늦게까지 에러와 싸우느라 고생하는 팀도 있었다.
그리고 교육생들에게 나를 소개할 때 알고리즘 티어를 공개하며, 알고리즘 질문도 받겠다고 한적이 있다.
하지만 지금까지 1명의 교육생만 질문을 했고, 프로젝트하느라 시간이 부족하다는 것을 느낄 수 있었다.
실제로 멀티캠퍼스에 방문한 교육생들을 만나보니 먼저 언급을 하더라. 시간이 부족해 알고리즘 질문을 못했다고..
1년 5개월의 SSAFY 생활동안 가장 아쉬웠던 것은 오프라인 수업에 한 번도 참여를 못했다는 것이다.
아무래도 온라인만의 한계는 있었던 것 같다.
생각지도 못하게 팀에서 불화가 있는 경우도 있었고, 조용하지만 체계적이고, 속도가 빠른 팀들도 있었다.
오프라인이었다면 이런 상황들을 좀더 빠르게 파악하여 도움을 줄 수 있지 않았을까 생각이 들었다.
7기 부터 부분적으로 오프라인 전환이 되었고, 실습코치 연장에 지원했지만 되지 않아 오프라인 참여의 기회를 놓쳐서 아쉬웠다.
하지만 나에게 1년의 교육생 활동과 5개월 간의 실습코치 활동의 기회를 주신 SSAFY 사무국에 감사드리며, 정말 값진 경험을 한 것 같아 만족스럽다.
SSAFY 1학기, 웹에 적응하지 못하여 퇴소하려고 했던 교육생이 실습코치 활동을 한 것 부터가 희망을 갖게 해주었고, 이제는 취업을 위해 열심히 공부해야겠다.
ssafy 6기 2학기,
공통 프로젝트 서울 1반,
특화 프로젝트 서울 3반
그리고 모든 교육생분들, 컨설턴트님들, 프로님들, 실습코치님들
모두 고생많으셨습니다!!
6월 5주차 결산
알고리즘
1일 1알고리즘
토이 프로젝트
수동배포는 마무리했지만 젠킨스에서 막혀버렸다..
블로그보고 하는데 오류도 많이뜨고, 아무튼 문제가 많은듯 하다.
다음주도 삽질할 예정
스터디 준비
5주차 Spring 스터디 진행하려고 했지만 스터디원 한명의 부재로 진행하지 못했다.
내일 진행할 예정이니 그전까지 정리한 부분들 복습할 예정이다.
후기
아니 러브버그.. 실화입니까..? 방역이 시급하다.
다음주에는 오랜만에 본가 내려갈 예정이다.
내려가서도 프로젝트나 개인 공부는 소홀하진 않을거고, 이사도 가야하니 짧게 다녀오려고 한다.
boj 2295 세 수의 합
https://www.acmicpc.net/problem/2295
집합 U에 포함된 원소들 중 세 수를 골라 더한 a + b + c = d 값도 집합 U에 포함되는 가장 큰 d를 찾는 문제입니다.
N이 최대 1000개이므로 N^3으로 구하면 시간 초과가 뜨기 때문에 다른 방법을 생각해봅니다.
우선 이 문제에서 세 수를 고를 때 중복이 허락됩니다.
즉, U = {2, 3, 5, 10, 15}에서 5를 세 번 골라 5 + 5 + 5 = 15가 될 수 있다는 뜻입니다.
이것을 고려하여 문제에 접근합니다.
먼저 위에서 기술한 a + b + c = d를 조금 변형하면 a + b = d - c가 됩니다.
그러면 N^2으로 a + b의 모든 경우를 구할 수 있습니다. 구한 값들은 따로 벡터에 저장해둡니다.
그러면 N^2으로 d - c도 구할 수 있으며, 이분 탐색으로 a + b == d - c인 d를 구한다면
시간은 N^2 * logN으로 줄어들 수 있습니다.
물론 upper_bound - lower_bound를 이용하여 갯수를 구하여 풀 수도 있지만 최적의 해를 구하는 문제가 아니고,
정확한 값이 있는지 찾기만 하면 되기 때문에 일반적인 이분 탐색으로도 풀 수 있습니다.
d - c를 기준으로 a + b를 탐색 해야하므로 v를 정렬해줍니다.
그 다음 이분 탐색으로 v[m] == dc인 경우를 찾아주고, max인 d를 출력해줍니다.
그리고 문제에서 고려한 다른 부분입니다.
1. 이 문제에서 입력은 자연수만 올 수 있으므로 d - c <= 0인 경우는 미리 배제할 수 있습니다.
2. d의 최댓값을 출력해야 하므로 순회하면서 max를 사용해야 하지만 미리 list를 내림차순으로 정렬했으므로 찾는 즉시 list[i]를 출력해주시면 됩니다.
물론 이 두 가지를 모두 하지 않아도 AC를 받을 수 있습니다.
첫 번째 코드는 가지치기를 했고, a + b = d - c를 찾는 즉시 출력한 코드입니다. 역시 시간이 가장 빨랐습니다.
두 번째 코드는 가지치기를 하지 않았고, a + b = d - c를 찾는 즉시 출력하였습니다.
세 번째 코드는 가지치기를 했고, a + b = d - c인 모든 경우의 max를 구했습니다.
네 번째 코드는 가지치기를 하지 않았고, a + b = d - c인 모든 경우의 max를 구했습니다.
4개의 결과 모두 이 문제에서는 시간 차이가 별로 없을 수 있지만 범위가 커진다면 차이도 분명 커질 것입니다.
만약 테스트나 대회문제를 푼다면 두 가지를 모두 하는 것이 좋습니다.
상황에 맞는 알고리즘을 선택하고, 가지치기의 중요성을 깨닫게 하는 문제였습니다.
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
59
60
61
62
63
|
#include <iostream>
#include <vector>
#include <algorithm>
#define MAX 1001
using namespace std;
vector<int> v;
int list[MAX];
int N;
void func() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
v.push_back(list[i] + list[j]);
}
}
sort(v.begin(), v.end());
int vsize = v.size();
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
int dc = list[i] - list[j];
if (dc <= 0) continue;
int l = 0;
int r = vsize - 1;
while (l <= r) {
int m = (l + r) / 2;
if (v[m] == dc) {
cout << list[i] << '\n';
return;
}
else if (v[m] > dc) {
r = m - 1;
}
else {
l = m + 1;
}
}
}
}
}
void input() {
cin >> N;
for (int i = 0; i < N; i++) {
cin >> list[i];
}
sort(list, list + N, [](int a, int b) {
return a > b;
});
}
int main() {
cin.tie(NULL); cout.tie(NULL);
ios::sync_with_stdio(false);
input();
func();
return 0;
}
|
cs |
'algorithm > binarysearch' 카테고리의 다른 글
boj 27977 킥보드로 등교하기 (4) | 2023.04.22 |
---|---|
boj 18113 그르다 김가놈 (0) | 2022.10.09 |
boj 2110 공유기 설치 (0) | 2021.04.13 |
boj 7453 합이 0인 네 정수 (0) | 2021.01.22 |
boj 2143 두 배열의 합 (0) | 2021.01.22 |
6월 4주차 결산
알고리즘
1일 1알고리즘
그리고 1400문제를 달성하였다.
400문제 때부터 100문제마다 스샷을 남겨놓았는데 지금보니 많이하긴 했네
Spring 스터디
4주차 스터디를 진행하였다.
예외 처리 관련하여 깊게 알아갈 수 있었고, 무지성으로 throws로 예외를 보내버렸던 기억이 있어 다시 생각하는 시간이 되었다.
토이 프로젝트
면접 등 개인적인 일정으로 잠시 진행이 멈췄었고, 다시 진행하기 시작했다.
물론 처음에는 진행 상황을 다시 파악하는데 시간이 걸렸었고, 배포부터 다시 보기로하였다.
팀원분이 이젠 일을 하시기 때문에 진행 속도는 점점 느려지겠지만 천천히 복습한다는 개념으로 접근할 예정이다.
후기
벌써 6월도 마지막. 7월이다..
7월에는 이사도 가기 때문에 새로울 것이다.
이젠 정신차리고 공부해야겠다.
6월 3주차 결산
6월 2주차 결산
알고리즘
1일 1알고리즘 실천
Spring 스터디
2 ~ 3주차 스터디를 진행하였다.
개발을 SpringBoot로만 했었기에 Spring 개념이 어렵기도 했고, 자바 문법을 응용하여 사용하는 것도 많았다.
프로젝트 진행할 때는 사람들이 쓰기 때문에, 해결 방법이기 때문에 사용했던 경험이 많았지만
왜 사용해야 하는지, 다른거에 비해 어떤 차이점이 있는지 이해할 필요를 느끼게 되었다.
후기
곧 면접도 있고, 연장코치 결과도 나올 것 같다.
바쁠 예정이라 여유가 있을 때 본가에 다녀올 생각이고, 별다른 일이 없다면 프로젝트 및 학습에 집중할 예정이다.
GitLab -> GitHub Mirroring
GitLab에 생성되어 있는 레포지토리를 GitHub로 옮기는 것을 정리합니다.
우선, 대용량 파일이 포함된 레포지토리를 미러링하는 것은 다루지 않음을 먼저 알립니다.
먼저 GitHub에서 새로운 Repository를 생성합니다.
공개 여부는 자유이며, Repository name만 작성하여 만들면 됩니다.
그러면 Repository가 생성되었고, HTTPS와 SSH URL을 볼 수 있습니다.
여기서 필요한건 HTTPS URL이니 따로 메모해둡시다.
그 다음 토큰 발급을 위해 본인 프로필 -> Settings에 들어갑니다.
그리고 좌측에 Personal access tokens를 눌러주면 해당 화면이 나옵니다.
여기서 Generate new token을 눌러 토큰을 생성합니다.
Note는 자유롭게 구분할 수 있도록 작성해주시고, scope는 repo만 체크를 합니다.
토큰 만료 시 재발급 받을 수 있으므로 Expiration도 자유입니다.
이후 아래에 있는 Generate Token 버튼을 누릅니다.
그러면 이렇게 토큰이 보이게 되는데 다른 경로로는 볼 수 없으니 반드시 바로 복사해줍니다.
만약 토큰을 잊어버렸다면 재발급을 받도록 합니다.
해당 토큰을 눌러주면 Edit 창으로 오게 되며, Regenerate token 버튼을 누르면 유효기간을 재설정하고, 새로운 토큰을 발급해줍니다.
토큰 만료 시에도 동일한 방법으로 재발급 받습니다.
이제 미러링을 하기 위해 생성되어 있는 GitLab 레포지토리에서 Settings -> Repository에 들어갑니다.
Mirroring repositories에 있는 Expand를 누릅니다.
이 곳에서 미러링을 진행합니다.
작성해야 할 곳은 "Git repository URL", "Password" 입니다.
Git repository URL에는 아까 위에서 메모해둔 HTTPS URL을 이용합니다.
HTTPS URL은 "https://github.com/닉네임/저장소이름.git"으로 되어있는데
github 앞에 "닉네임@"을 추가한 "https://닉네임@github.com/닉네임/저장소이름.git"을 넣어주시면 됩니다.
Password에는 조금 전 발급 받았던 Personal access tokens을 넣어줍니다.
이제 Mirror repository 버튼을 누릅니다.
그 후 바로 밑에 "Update now"라고 하는 새로고침 버튼을 눌러줍니다.
이제 생성했던 GitHub Repository에 들어가면 미러링이 완료된 것을 확인할 수 있습니다.
다만 이 방법은 GitLab에 등록했던 Issues와 Merge Request가 이동하지 않으며, Commit 기록만 이동하게 됩니다.
다른 방법이 있을지는 모르겠지만 GitLab과 GitHub은 다른 부분이 조금 있기 때문에 옮겨지지 않는다는 개인적인 생각입니다.
'Etc' 카테고리의 다른 글
AWS S3로 React 배포하기 (0) | 2023.02.02 |
---|---|
GitHub Actions를 이용한 Slack Notification (0) | 2023.01.30 |
Unity Script로 카메라 Culling Mask 기능 사용하기 (2) | 2021.10.29 |
Unity 카메라 Culling Mask (0) | 2021.10.29 |
TypeScript 실행 (0) | 2021.08.30 |