본문 바로가기
728x90
반응형

개발공부74

[2020 KAKAO BLIND] 문자열 압축 / 사용언어 : 파이썬(python) ※ 문제링크 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ※ 관련개념 Sliding Window 알아두면 유용할 알고리즘을 하나 소개해본다 !!! velog.io 해당문제는 투 포인터와 슬라이딩 윈도우의 개념을 활용해서 풀 수 있는 문제였다. 문제의 조건 중에 처음 문자열부터 기준으로 정해진 길이만큼 슬라이싱을 해야한다고 주어졌기에 중간부터 값이 묶이는 상황을 고려하지 않아도 되었다. 알고리즘 구상 자체는 정해진 길이만큼 슬라이싱을 반복해서 비교 후 중복횟수를 카운트해서 압축 후 문자열의 상태를 만.. 2022. 6. 24.
[2021 Dev-Matching] 로또의 최고순위와 최저순위 ※ 문제링크 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 이번 문제는 정렬과 조건문, 반복문을 활용하면 풀 수 있는 문제였다. 주어지는 입력값 자체가 많지도 않고, 예외적인 조건도 거의 없어서 문제의 조건대로만 작성하면 답을 구할 수 있었다. 고려해야할 조건은 일치 숫자가 2개 이상일때부터 등수가 일치 숫자마다 하나씩 올라간다는 것이었고, 나머지는 0의 개수를 확인하여 계산식에 반영해주었다. 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값들을 sort.. 2022. 6. 22.
[2021 KAKAO BLIND] 신규아이디 추천 / 사용언어 : 파이썬(python) ※ 문제링크 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 이번 문제는 주어진 조건에 따라 반복문, 조건식, re모듈, 정규표현식을 사용하면 풀 수 있는 문제였다. 각각의 단계별로 하나하나씩 사용해야할 문제풀이방법을 구상한 후 순서대로 알고리즘을 구성하였으며, 작성 후 테스트 결과 큰 문제없이 작동하는 것을 확인하였다. 자세한 풀이방법과 코드는 아래와 같으며, 코드 자체에 풀이방법에 대한 내용을 포함하여 아래 코드를 참조하면 좋을 듯하다. # 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환.. 2022. 6. 5.
[2022 KAKAO BLIND] 신고결과 받기 / 사용언어 : 파이썬(python) ※ 문제링크 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 해당 문제는 반복문에 대한 이해와 배열의 인덱스를 활용할 수 있으면 쉽게해결할 수 있는 문제였다. 시간을 절약하기 위해서는 배열의요소들을 호출하고 결과값을 확인할때 정확한 인덱스 값을 이용하여 호출하는 과정이 필요하다 판단했기 때문에 신고를 당한 횟수를 확인할 리스트와 신고를 한 사람의 인덱스번호를 저장할 리스트를 생성하여 문제를 해결하였다. 또한 한명의 사람이 동일한 사람을 여러번 신고해도 1번의 신고로 취급한다라는 조건이 있었기 때문에 중.. 2022. 4. 24.
[BOJ] 16234번 인구 이동 / 사용언어 : 파이썬(python) ※ 문제링크 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 해당문제는 BFS의 개념을 활용하여 사방위를 확인하고, 반복문을 통해 가능한 인구이동의 경우의 수를 체크하여 풀 수 있는 문제로, BFS의 기본적인 개념만 이해하고 있으면 통과는 생각보다 쉽게 가능했다. 다만, 단순한 반복문과 BFS의 조합으로 문제를 해결하면Pypy3로만 통과 가능하였고, Python3로 해결하기 위해서는 반복문을 반복할때 완전탐색을 하는 것이 아니라 이전의 결과값에 따라다르게 탐색을 하는 방식으로 구현해야하는 문제였다.. 2022. 4. 15.
[BOJ] 2493번 탑 / 사용언어 : 파이썬(python) ※ 문제링크 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 해당 문제는 자료구조인 스택과 관련된 문제로 선입후출(FILO)의 개념을 활용하여 해결할 수 있는 문제였다. 3개의 리스트를 활용해 문제를 해결하였는데, 사실상 1개는 정답기록용으로 사용하였기에 실제 사용된 리스트는 2개라고 생각하면 될 것 같다. 기본 개념은 입력받은 타워의 높이를 하나의 리스트에 저장하고, 해당 값을 왼쪽부터 하나씩 꺼내서 다른 리스트에 쌓으며 비교를 반복하는 방식으로 해결하였으며, 조건에 부합하는 타워가 나타나면 바로 값을 기.. 2022. 4. 4.
[BOJ] 1197번 최소 스패닝 트리 / 사용언어 : 파이썬(python) ※ 문제링크 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net ※ 관련개념 [알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io 해당 문제는 최소 스패닝 트리에 대한 개념을 이해할 수 있는 문제로, 2가지 방법으로 해결이 가능했다. 최소 신장트리에 대한 내용 및 문제 해결을 위해 이해가 필요한 프림 알고.. 2022. 4. 2.
[BOJ] 2252번 줄 세우기 / 사용언어 : 파이썬(python) ※ 문제링크 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net ※ 관련개념 [알고리즘] 위상 정렬(Topological Sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io 해당 문제는 위상정렬 알고리즘의 대표적인 문제로 해당 알고리즘에 대한 기본적인 이해를 했으면 쉽게 해결할 수 있는 문제였다. 위상정렬을 간단하게 설명하면 들어오는 간선수를 확인하여 정렬을 하는 알고리즘.. 2022. 3. 26.
[BOJ] 2531번 회전 초밥 / 사용언어 : 파이썬(python) ※ 문제링크 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net ※ 관련개념 슬라이딩 윈도우(Sliding Window) 알아두면 유용할 알고리즘을 하나 소개해본다 !!! velog.io 해당 문제는 투 포인터에서 변형된 슬라이딩 윈도우 방식으로 해결할 수 있는 문제였다. 슬라이딩 윈도우를 간단하게 설명하면 포인터 2개를 통해 일정 구간의 범위를 유지한채로 탐색하는 방법이라고 이해하면 되겠다. 해당 개념에 대해 잘 설명해놓은 사이트가 있어서 링크를 걸어두었으니 좀 더 자세한.. 2022. 3. 26.
728x90
반응형