본문 바로가기

운동하는 개발자/알고리즘, 코딩테스트

(40)
실무자가 경험한 코딩테스트(알고리즘) 책 추천 + 스토리.. 제법 오래전 사회 초년생쯔음 시절 코딩테스트란 것을 전혀 모르던 때 이스트소프트에 서류합격하여 코딩테스트에 암것도 모르고 들어갔다가 맨붕한 경험이 있었다. 결국 코테가 없는 곳으로 이직하였었으나 코딩테스트는 꼭 이직의 준비 뿐만아니라 생각하는 사고력을 키운다는 점에서 공부해야겠다고 생각했었고 약 5년 전쯤 회사 사수와 함께 해커랭크를 풀었었다. 일주일간 3~4문제를 풀어오고 어떻게 풀었는지 비교해는 식으로 가볍게 스터디 식으로 진행했었는데 문제는 해커랭크가 모두 영어란 것이다. 영어를 잘 읽는 사수에 비해 영어에 약한 나는 문제를 읽고 이해하는 거부터가 너무 시간을 소모하고 지치게 하였다. 그리고 공부없이 무작정 풀다 보니 문제를 어떻게 접근해야 하는지, 내가 왜 틀렸는지 알 수 없었기에 난이도가 오르면..
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차원배열의 표에서 ..
HackerRank [String] Weighted Uniform Strings /알고리즘 해커랭크 문제 주소 : https://www.hackerrank.com/challenges/weighted-uniform-string/problem 난이도 : easy 성공률 : 73.23% 문제 : a~z까지 각 문자에는 매칭 되는 가중치 값이 있다, 문자는 오름차순 정렬되어있다, 동일한 문자의 경우 본 문자의 가중치값, 문자 누적의 가중치 값을 모두 가진다 두번째 파라미터로 넘어온 값들이 해당 문자열의 가중치에 존재하면 각각 YES, NO로 리턴하라 풀이 : 마지막 처리한 문자 값을 들고 있으며 비교하여 이전과 같으면 가중치 누적합을 set에 추가 이전과 다르면 가중치 표에 맞는 값을 set에 추가 두 번째 파라미터로 넘어온 값들이 set에 있는지 확인하여 Yes or No 리턴 답안 import math i..
HackerRank [String] Bear and Steady Gene /알고리즘 해커랭크[미해결] 문제 주소 : www.hackerrank.com/challenges/bear-and-steady-gene/problem 난이도 : Medium 성공률 : 63.58% (210505) [미해결] 7개 예제 타임아웃 문제 : 4의 배수의 길이를 가진 문자열을 준다 그 문자는 A, C, T, G로만 구성되어있다 substring을 수정하여 A, C, T, G가 모두 같은 개수가 나오게 해야 한다 최소한으로 수정해야하는 substring 길이 값을 리턴하라 풀이 1) ACTG 문자 중 초과된 문자와 각각의 수, 합산한 수(변환해야 하는 최소 개수)를 체크 2) 변환해야 하는 최소개수길이만큼 substring을 한 칸씩 이동하며 분리시켜봄 3) 분리시킨 substring에 변환해야하는 문자들이 모두 포함하는지 체..
HackerRank [Strings] Sherlock and the Valid String /알고리즘 해커랭크 문제 주소 : https://www.hackerrank.com/challenges/sherlock-and-valid-string/problem 난이도 : Medium 성공률 : 64.75% 문제 : 셜록 규칙에 맞는 유효한 문자열 찾기 1. 모든 문자가 동일한 개수여야 유효하다 2. 오직의 하나의 문자를 제거할 수 있다 풀이 : 코드 주석 참고 답안 import math import os import random import re import sys import collections def isValid(s): dic :dict = collections.Counter(s) #딕셔너리를 통하여 각 문자와 개수 산출 (a는2개 b는3개) dic2 : dict = collections.Counter(dic.v..
HackerRank [Strings] Sherlock and Anagrams /알고리즘 해커랭크 문제 주소 : www.hackerrank.com/challenges/sherlock-and-anagrams/problem 이도 : Medium 성공률 : 87.92% 문제 : 주어진 문자열에서 에너그램인 하위 문자열이 몇 쌍인지 구하시오 풀이 : 글자수를 늘려주며 하위 문자열을 비교 답안 #!/bin/python3 import math import os import random import re import sys # # Complete the 'sherlockAndAnagrams' function below. # # The function is expected to return an INTEGER. # The function accepts STRING s as parameter. # def sherlo..