전체

    백준 9421 소수상근수(소수)

    https://www.acmicpc.net/problem/9421 9421번: 소수상근수 양의 정수 n의 각 자리수의 제곱의 합을 계산한다. 그렇게 해서 나온 합도 각 자리수의 제곱의 합을 계산한다. 이렇게 반복해서 1이 나온다면, n을 상근수라고 한다. 700은 상근수이다. 72 + 02 + 02 = www.acmicpc.net 소수(prime)에 대해서 구현할 줄 알면 쉬운 문제였다. '에라스토테네스의 체'를 이용하여 소수를 구하고 구현해주면 되는 문제였다. 에라스토테네스의 체 연습문제 재밌는점은 각 자리수를 제곱하고 더해주는 기법을 map()으로 표현할 수 있다는 점이다. tmp = sum(map(lambda x: int(x) ** 2, temp)) map(적용시킬함수, 대상변수) 각 자리수에 대해..

    [SSAFY / 싸피] 8기 SW적성진단 합격

    [SSAFY / 싸피] 8기 SW적성진단 합격

    이번 삼성 청년 SW 아카데미 8기에 서울 지역에 Coding Track으로 지원을 했다. 7기 지원을 했을 땐 패배의 쓴맛을 보고 이번엔 진지하게 임했는데 코딩테스트 합격이 날라왔다. 바로 면접 스터디를 준비하기로 하고 면접 준비를 시작했다. 살면서 면접이 처음이라 어떻게 준비해야 될지 매우 막막한 심정이다. 스터디에서 아무 준비도 안하고 어떡하지라는 마인드로 가고 싶지 않아 최대한 자기소개 및 예상 꼬리질문을리스트로 만들어보고 있다. 일단 싸피는 회사 면접이 아닌 우리를 취업시켜주기 위해 교육을 시켜주는 교육기관이므로 이것에 맞게 면접을 준비해야 될 것 같다. 특히나 싸피 지원할 떄 나의 github, blog, 이력서를 본게 아닌 500자 이내의 지원서+코딩테스트 결과로만 판단했기 때문에 나에 대한..

    백준 2872 우리집엔 도서관이 있어(그리디)

    https://www.acmicpc.net/problem/2872 2872번: 우리집엔 도서관이 있어 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근 www.acmicpc.net 개인적으로 어려웠던 문제였다. 여러 케이스들을 직접 돌려보면서 규칙을 찾는데 애를 먹었다. 여러번 시도 끝에 찾은 규칙은 list를 순차적으로 탐색하면서 std보다 작은 값은 무조껀 앞으로 빼줘야된다는 것이다. ex) 3 1 4 2 5 std = 3 3보다 작은 수는 1,2인데 얘내는 무조껀 앞으로 빼줘야됨. 이런 규칙을 찾고 처음에 list,remove, list 이어붙이기 이런걸 썻지만 ..

    Coding Test(Two Pointer)

    Coding Test(Two Pointer)

    리스트에 순차적으로 접근해야 할 때 두개의 점의 위치를 기록하면서 처리 아마 투 포인터를 몰랐다면 완전 탐색을 이용해서 O(N^2)만큼 했을텐데 투 포인터를 이용하면 선형 관계에서 해결 가능 n = 5 # 데이터의 개수 N m = 5 # 찾고자 하는 부분합 M data = [1, 2, 3, 2, 5] # 전체 수열 count = 0 interval_sum = 0 end = 0 # start를 차례대로 증가시키며 반복 for start in range(n): # end를 가능한 만큼 이동시키기 while interval_sum < m and end < n: interval_sum += data[end] end += 1 # 부분합이 m일 때 카운트 증가 if interval_sum == m: count +=..

    Coding Test(Sliding Window)

    Coding Test(Sliding Window)

    고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이요해 문제를 풀이하는 알고리즘 ● Brute Force - list slicing 을 이용한 방법 for i in range(len(nums)-k+1): r.append(max(nums[i:i+k])) ● queue을 이용한 방법 (Fast) for i, v in enumerate(nums): window.append(v) if i