본문 바로가기

전체 글

(263)
Beakjoon] 버블 소트 (백준 1377 코테) - 정렬 문제주소 : https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 문제 : 풀이 : 정렬이 필요 없어지는 데까지 몇 번의 회전이 있었는지 구하는 문제.. 코드 그대로 구하는 건 시간복잡도에서 탈락한다 그렇기에 다른 방식으로 접근해야하는데 i가 회전을 끝낸 횟수는 값이 좌측으로 이동한 수와 같다.(한 번의 i값 회전으로 좌측으론 한 칸밖에 못 움직이므로) 그래서 인덱스값을 저장하여 sort로 정렬시키고(시간복잡도가 낮으므로) 각..
Beakjoon] 절댓값 힙 구현하기 (백준 11286 코테) = 우선순위 문제주소 : https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 : 연산의 개수때문에 O(n^2의 연산속도의 알고리즘으로 해결하면 안된다. O(nlogn) 시간복잡도의 알고리즘으로 풀어야 하며 값을 입력받으면서 바로바로 조건에 맞게 정렬시켜야 한다. 우선순위 큐를 이용하되 순서의 조건이 까다롭기에 조건을 직접 알려줘야한다. 코드는 아래 숨김 더보기 #include #include #include struct MyQueue..
실무자가 경험한 코딩테스트(알고리즘) 책 추천 + 스토리.. 제법 오래전 사회 초년생쯔음 시절 코딩테스트란 것을 전혀 모르던 때 이스트소프트에 서류합격하여 코딩테스트에 암것도 모르고 들어갔다가 맨붕한 경험이 있었다. 결국 코테가 없는 곳으로 이직하였었으나 코딩테스트는 꼭 이직의 준비 뿐만아니라 생각하는 사고력을 키운다는 점에서 공부해야겠다고 생각했었고 약 5년 전쯤 회사 사수와 함께 해커랭크를 풀었었다. 일주일간 3~4문제를 풀어오고 어떻게 풀었는지 비교해는 식으로 가볍게 스터디 식으로 진행했었는데 문제는 해커랭크가 모두 영어란 것이다. 영어를 잘 읽는 사수에 비해 영어에 약한 나는 문제를 읽고 이해하는 거부터가 너무 시간을 소모하고 지치게 하였다. 그리고 공부없이 무작정 풀다 보니 문제를 어떻게 접근해야 하는지, 내가 왜 틀렸는지 알 수 없었기에 난이도가 오르면..
행복지수가 높은 평범한 개발자 (링크) 평소 드는 생각들을 혼자 정리하기도 하는데 어디 정리해 두면 좋겠다 싶어서 글을 작성합니다. 이 블로그는 개발 기술블로그이기에 성격과 맞지 않다고 생각하여 네이버에 작성합니다. https://blog.naver.com/wyh2002 행복지수가 높은 평범한 개발자 : 네이버 블로그 이런 저런 혼자만의 생각을 작성합니다 개발 기술 블로그 https://singo112ok.tistory.com/ blog.naver.com
Beakjoon] '좋은 수' 구하기 (백준 코테) = 투포인터 문제주소 : https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 문제 : N개의 수 중에 다른 두 수의 합으로 표현되는 수 개수 찾기 풀이 : 정렬시킨 뒤 투포인터 기술로 양 끝에서부터 더하며 비교한다. 추가로 '다른 두 수의 합으로' 라는 말에 주의하여 자기 자신을 더하지 않도록 예외처리한다. 코드는 아래 숨김 더보기 #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(N..
Beakjoon] 나머지 합 구하기 (백준 코테) = 구간합 문제주소 : https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 문제요약 : N개의 수가 주어진 경우 연속된 부분의 합이 M으로 나누어 떨어지는 구간의 개수를 구하라 풀이 : 연속된 부분의 합이라는 것부터 구간합을 계산해 놓고 구하는 것을 추측할 수 있다. 누적합을 구해놓고 나머지 연산을 처리 한 뒤 0인것들의 수를 세어둔다 구간합의 계산은 S[End] - S[Start] 이므로 S[End]와 S[S..
Beakjoon] 구간 합 구하기 5 (백준 코테) = 구간합 하 정말 얼마만에 쓰는 알고리즘, 코딩테스트 탭인지... 해커랭크 풀다가 영어문제 읽는거에서부터 지쳐서 포기하고.. 파이썬 책사서 책에 있는 문제 풀다가.... 일이 바빠서 놨다가.. 다시 C++로 된 책 사서 공부하다 넘 어려워서 서점가서 직접 보고 고른책 덕에 다시 백준으로 시작.. 책은 다음에 리뷰하기로.. 문제주소 : https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 문제 : 2차원배열의 표에서 ..
2023년 3분기 개발자 회고록 1. 회사🏢 지난 플젝은 완료하였고 현재 다른 플젝들과 함께 배포 준비 중에 있다. 다음으로 큰 변화로 주요 업무와 인원이 변경되었다. 나와 사수가 A라는 업무를 담당하고 있었는데 사수가 여기서 빠져나가고 다른 팀의 플젝에 합류하게 되었고 나는 B라는 업무를 병행 그리고 기존 B업무를 하던 직원도 나와 함께 A를 병행하게 되었다. 문제는 A 쪽 업무가 현재는 매출은 잘 나오고 있지만 시장도 점점 작아지고 회사에서도 관심도가 줄어가는 중인 상황이다. 때문에 회사에서 여기에 무언가가 더 투자하기를 꺼려하는 상황이기에 B업무의 직원이 A 쪽 업무파악에 투자할 시간이 부족한 상황이다. 솔루션이야 제법 안정화되어 유지보수 할 일이 잘 없긴 하지만 만약 발생하면 나 혼자 하게 될 것 같다... 회사에서 대체불가 인..