본문 바로가기

728x90
반응형

알고리즘/프로그래머스

(9)
[Python] 멀쩡한 사각형 - Summer/Winter Coding(2019) https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 위 그림에서 멀쩡한 사각형을 구하기 위해서는 대각선으로 깔끔하게 잘리는 사각형을 찾아야 한다. 그러기 위해서는 최대 공약수를 구해 w와 h를 나누면 split_w, split_h가 구해지며 위 그림에는 최대 공약수 4로 나누어 2와 3이 구해진다. (2와 3으로 봤을 때 대각선으로 깔끔하게 잘리는 사각형 구하기 가능) 그런 다음 멀쩡한..
[Python] 오픈채팅방 - 2019 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr record에 Enter, Leave, Change가 수행된 문자열이 담겨져 있어 해당 문자열에 따라 출력해야 하는 문구를 result로 내보낸다. Change를 수행 할 경우 해당 id에 따른 전에 기록에서 닉네임이 바뀌어야 하기 때문에 문구를 바로 출력하면 문제가 있다. 그래서 배열에서 연산을 전부 수행한 다음에 result를 내보내면 된다. def solu..
[Python] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 낙서가 되어 있는 나의 로또 번호와 1등 당첨 로또 번호가 주어졌을 때 로또의 최고 순위와 최저 순위를 출력으로 내는 문제이다. 낙서 된 부분은 0으로 표시되는데 0이 맞는 부분이면 맞은 부분이 0의 갯수만큼 +한 다음에 최고 순위를 구하고 0이 맞지 않는 부분이라면 0을 제외한 현재 로또 번호 중 맞는 부분의 갯수..
[Python] 신고 결과 받기 - 2022 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 일정 횟수만큼 신고를 받아야 정지를 먹는다. (단, 동일한 인물이 중복 신고한 경우 1회로 처리함) 그래서 신고 정보가 있는 report에서 단순히 split한 다음에 누가 누구에게 신고를 했는지 횟수를 저장하면 된다. 저장된 횟수가 정지 먹을 만큼의 횟수라면 정지를 먹고 신고한 사람에게 당신의 신고자가 정지 먹었다는 걸 알려주기 위해 메일을 보낸다. p..
[Python] 신규 아이디 추천 - 2021 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 이 문제는 정규화를 사용해 문자열을 변환해주는 re 패키지를 사용하면 쉽게 풀 수 있다. 문제에서 정의하는 신규 아이디 추천 알고리즘은 다음과 같다. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서..
[Python] 숫자 문자열과 영단어 - 2021 카카오 채용연계형 인턴십 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 입력으로 숫자의 일부 자릿수를 영단어로 바꾼 문자열이 주어지는데 예시는 다음과 같다. 1478은 "one4seveneight", 234567은 "23four5six7"으로 주어진다. 그래서 이런 입력 데이터에서 숫자가 아닌 영단어로 표현된 부분을 숫자로 바꾸어 제대로 된 숫자를 출력하는게 목표이다. 숫자일 경우에는 그대로 문자열에 추가해주고 숫자로 변..
[Python] 삼각 달팽이 - 월간 코드 챌린지 시즌1 programmers.co.kr/learn/courses/30/lessons/68645 n=5 그림을 보면 [1, 2, 3, 4, 5], [6, 7, 8, 9], [10, 11, 12], [13, 14], [15] 순으로 배열에 값이 들어가는 것을 확인할 수 있습니다. 즉 5번, n번만큼 작동하면 모든 값이 들어갑니다. 회차마다 들어가는 값은 n - 회차입니다. (회차는 배열이기 때문에 0부터 시작) 하나의 둘레는 3회가 필요하기 때문에 회차 % 3을 통해 방향을 구합니다. (우 -> 하 -> 상이라서 3회) 회차 % 3 == 0이면, 아래로 향하고 회차 % 3 == 1이면, 오른쪽으로 향하고 둘 다 아니면 위로 올라갑니다. 이 논리를 통해 2차원 배열를 꽉 채운 후에 sum(arr, [])를 통해 1차..
[Python] 문자열 압축 - 2020 KAKAO BLIND RECRUITMENT 2020 KAKAO BLIND RECRUITMENT > 문자열 압축 programmers.co.kr/learn/courses/30/lessons/60057 각각의 패턴 크기(1, 2, 3...)로 압축된 문자열의 길이 중 가장 많이 압축된 문자열(이하 최소값)의 길이를 return하는 문제이다. 0번째 인덱스부터 패턴을 비교해야 하며 중복된 횟수가 1인 경우는 무시하고 2부터 표시한다. 모든 패턴을 검사할 때까지 큰 반복문을 돌려주고 그 안에 반복문에서 패턴과 문자열 매칭을 통해 {중복된 횟수+패턴}으로 압축해준다. 작동 시간을 단축시키고 싶었으나 매칭 과정에서는 힘들 것 같아 최소값을 구하는 과정을 줄이는데 초점을 맞췄다. 패턴이 일치하지 않아 word에 pattern을 추가하는 과정 다음으로 최소값과..

728x90
반응형