전체 글 666

[백준] 2493 탑 C++

문제 요약 현재 탑의 크기보다 큰 탑 중 왼쪽으로 가장 가까운 탑찾기 접근 1. 생각의 흐름(Greedy) 출력 아무것도 없을때 0 값이 있으면 해당 인덱스 값 출력 -> (value, index ) 같이 넣어야할듯 저장한 값보다 값이 크면 큰값이 나올때까지 pop 저장한 값보다 값이 작으면 push 전체 코드 #include #include #define MAX_N 500000 using namespace std; int N; int arr[MAX_N]; int main() { cin >> N; for (size_t i = 0; i > arr[i]; stack s; // value, index for (size_t i = 0; i < N; i++) { if (s.empty()..

STUDY/Algorithm 2022.10.11

[프로그래머스] 모음사전, C++

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 알파벳 aeiou 로 만들어지는 단어에 대한 사전순 위치 구하기 접근 1. 완전탐색 생각없이 완전탐색으로 구현했다. 모든 값을 구해서 map에 저장한다. for문으로 구현하는데 실패해서 재귀함수를 사용했다. void make(int ind, string word) { if (ind == 6) { return; } if (word != "" && !dict.count(word)) { // dict[word] = index++; 아래 두줄을 하나로 합쳐도 된다. dict[word] = index; in..

STUDY/Algorithm 2022.10.11

이번 주를 돌아보며 (0926~1002)

0. 타임라인 9월 26일 #멘토링 #어복쟁반 #편육 #냉면 9월 27일 #재택근무 #11시간 #선택근무 9월 28일 #동기회식 9월 29일 #코로나 #양성 #자가격리시작 9월 30일 #코로나 10월 1일 #코로나 10월 2일 #코로나 1. 회사 이번주는 회사에 붙어있던 시간이 별로 없다. 위의 타임라인을 보면 알겠지만 재택근무도 있고 코로나도 걸리고 해서 그렇다. 그리고 월요일에 멘토링도 했는데 점심먹고 오후엔 집으로 돌아갔다. 수요일에 팀장님이랑 오랜만에 이야기를 나눴다. 요샌 어떤 일 하냐고 물어보셨고 내가 속해있는 프로젝트가 진행이 조금 더딘게 있어 지난주에 갔다온 교육 복습하고 있다고 했다. 그 말을 들으시더니 일을 더 줘야겠다고 말씀을 하셨다. 농담인지 진담인지 잘 모르겠지만 일 생기면 배울게..

OTHERS/내 생각 2022.09.26

이번 주를 돌아보며 (0919~0925)

1. 회사 이번주 내내 용산으로 교육을 들으러 다녔다. 회사에서 사용하는 툴과 그에 대한 이론 교육이었다. 일주일 내내 들었지만 교육 내용은 크게 와닿지 않았다. 실습은 열심히 참여하려고했지만 이론은... 그리고 경기도에서 서울 출퇴근은 상당히 좋지 않다고 느꼈는데 이유를 몇개만 적어보겠다. 우선 서울로 출퇴근하는데 편도로 한시간반이 걸린다. 교육장소까지 바로가는 게 없어서 광역버스를 타고 서울시청에 가서 지하철을 갈아타서 용산에 간다. 거의 한시간 반인데 조금이라도 늦게 출발하면 저 시간에서 조금씩 더 늘어나고 조금 일찍 출발하면 저 시간보다 줄어든다. 시간을 줄이기위해 일찍 출발해야하는데 그러면 또 아침운동 하기가 어려웠다. 주로 6시 반엔 출발했는데 그 전에 운동도 하고 샤워도하고 아침밥도 먹고 다..

OTHERS/내 생각 2022.09.25

이번 주를 돌아보며 (0912~0918)

1. 회사 일에 대해선 딱히 말할건 없다. 계속 매뉴얼보고 공부하고 모르는거 물어보고. 조금 달라진게 있다면 질문을 조금더 많이 하게 되었다는 점. 다음주는 교육을 들으러 용산으로 출퇴근한다. 현재 살고있는 곳에서 꽤 먼데 편도로 한시간 정도 걸린다. 아침 일찍 나가서 광역버스를 타고 가서 지하철로 한번 환승을 해야하는 그런 여정이 기다리고 있다. 대전에 있으면서 한시간 정도 거리는 거의 뭐 끝에서 끝으로 가는 느낌인데 여기선 기본적으로 깔고 가는 시간이다. 그래서 많이 막히지만 않길 바라고 있고 막힐거 감안해서 더 일찍 나갈 예정이다. 9시 교육시작이니까 첫날은 6시반에서 7시 사이에 출발해야지. 다음주에 팀 회식도 예정되어있는데 사원급, 대리급, 과장이상급으로 나누어서 진행한다고 한다. 다행히(?) ..

OTHERS/내 생각 2022.09.18

[백준] 2143 두 배열의 합, C++

2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 문제 요약 두 배열이 주어졌을때 각각의 배열로 만들수 있는 부배열의 합이 T가 되는 부배열쌍의 개수 구하기 접근 1. 생각의 흐름 각 배열의 부배열합을 구해서 저장해야한다. 원소가 1개인 것부터 모든 원소가 들어간 것 까지의 부배열을 만들고 그의 합을 저장했는데 누적합을 사용했다. void makeArr( vector& arr, vector& cumArr, int size ) { a..

STUDY/Algorithm 2022.09.18

[백준] 1351 무한수열, C++

1351번: 무한 수열 첫째 줄에 3개의 정수 N, P, Q가 주어진다. www.acmicpc.net 문제 요약 무한 수열 A의 N 번째 값 구하기 A0 = 1, Ai = A⌊i/P⌋ + A⌊i/Q⌋ (i ≥ 1) (⌊x⌋는 x를 넘지 않는 가장 큰 정수이다.) 접근 1. 구현 주어진 조건에 대해 구현하기. N 에 대해서 구해야하므로 Top Down 방식이 나을듯 했다. 그리고 max(N) = 10^12 이므로 꽤 많은 연산이 있을 것이고 중복 되는 값이 있을 것이므로 Dynamic Programming으로 구현한다. DP을 위해 배열을 사용해서 메모리를 잡으면 공간복잡도는 O(N)이나 최대값이 4*10^12이므로 메모리 제한을 초과한다. -> 해시(unordered_map)를 사용해서 필요한 값만 저장..

STUDY/Algorithm 2022.09.18

이번 주를 돌아보며 (0905~0911)

1. 회사 이번주에 월간 회의가 있었다. 팀장님이 팀, 부서 등의 안건을 공유해주셨고 팀원들의 업무 진행상황을 공유하는 시간이었다. 진행상황을 공유할때 내 차례가 왔었고 그때 회의에 참여하고 거기에서 모르는 것에 대해 계속 찾아보고 있다고 말했다. 그렇게 공유하고 나니 팀장님이 뭐 어려운건 없냐고 물어봤다. 거기서 뭔가 열심히 회의에 참여하며 배우고 있는데 방향이 맞는지 모르겠다고 전했다. 지난주부터 계속 제대로 하고 있는게 아닌지 불안해 하고 있었는데 타이밍이 좋았다. 그 이후 팀장님, 과장님과 이러저런 이야기를 나누었고 그 덕분에 불안함이 어느정도 해소되었다. (물론 일이 그만큼 늘어났다.) 모르는게 있으면 물어보라고 많이 해주시는데 어디까지 물어보고 어디까지 찾아봐야하는지 잘 모르겠다. 2. 추석 ..

OTHERS/내 생각 2022.09.12

[백준] 1103 게임, C++

1103번: 게임 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 www.acmicpc.net 문제 요약 동전이 보드 위에서 움직일 수 있는 최대횟수 구하기 접근 1. 생각의 흐름 1 - BFS 보드가 이차원이고 모든 방향을 탐색하면서 최대로 움직이는 횟수를 파악해야하므로 그래프 탐색중 BFS를 사용해야할 것 같았다. BFS는 특정 지점까지의 최소 거리를 구할 때 사용하는데 이 경우에서도 충분히 사용할수 있을 거라고 생각했다. (멈추는 지점까지의 최소 거리를 구하면 최대로 움직인 거리를 구하는 거랑 같을 거니까) 간단하게 적어보면 다음과 같다. (0,0)..

STUDY/Algorithm 2022.09.12

[Softeer] 교차로, C++

Softeer 자율주행차가 아래와 같은 교차로를 통과하는 상황을 생각하여 보자. 이 문제에서 다루는 교차로에서는 직진만 가능하기 때문에, 아래 그림과 같은 네 가지 방법으로만 교차로 softeer.ai 문제 요약 자동차별로 교차로를 통과하는 시간 출력하기 우측 도로에 자동차가 없어야 통과할수 있음 접근 1. 머리에 생각나는 대로 알고리즘 작성 A~D까지 도로 Queue 생성, 입력에 대해서 도로별로 시간을 push 출력을 위해 queue도 생성 Time(t) = 0 부터 시작해서 매 초 각 도로 확인 A~D 도로의 첫번째 차가 도착한 시간 확인. 차 시간이 현재 시간보다 작거나 같은 경우 오른쪽에 차가 없으면 체크 나머지 경우 패스(현재시간보다 크거나, 작거나 같지만 오른쪽에 차가 있는 경우) 네 도로 ..

STUDY/Algorithm 2022.09.05