본문 바로가기

728x90

IT/Python

(167)
[프로그래머스] Lv.1 신규 아이디 추천 [Python] - 문자열 문제 규칙에 따라 주어진 아이디를 수정해서 추천하기 더보기 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기$($-$)$, 밑줄$($_$)$, 마침표$($.$)$ 문자만 사용할 수 있습니다. 단, 마침표$($.$)$는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니..
[프로그래머스] Lv.1 신고 결과 받기 [Python] 내가 신고한 유저가 다른 사람 포함 k명 이상에게 신고받하면 그 유저는 정지를 당한다. 그 사실을 신고한 사람에게 이메일로 전달 한다면, 각 유저 별로 이메일을 받은 개수를 출력하는 문제 더보기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 ..
[백준] 11656번 접미사 배열 [Python] 주어진 단어의 접미사를 사전순으로 한 줄에 하나씩 출력하는 문제 더보기 문제 접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다. baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다. 문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. 출력 첫째 줄부터 S의 접미사를 사전순으로 한 줄에 하나씩 출력한다. 단어를 앞..
[백준] 1057번 토너먼트 [Python] 토너먼트 경기에서 주어진 두 순번이 붙게되는 라운드를 구하는 문제 더보기 문제 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 한다. 이긴 사람은 다음 라운드에 진출하고, 진 사람은 그 라운드에서 떨어진다. 만약 그 라운드의 참가자가 홀수명이라면, 마지막 번호를 가진 참가자는 다음 라운드로 자동 진출한다. 다음 라운드에선 다시 참가자의 번호를 1번부터 매긴다. 이때, 번호를 매기는 순서는 처음 번호의 순서를 유지하면서 1번부터 매긴다. 이 말은 1번과 2번이 스타를 해서 1번이 진출하고, 3번과 4번이 스타를 해서 4번이 진출했다면, 4번은 다음 라운드에서 번호 2..
[프로그래머스] Lv.1 햄버거 만들기 [Python] 일정한 순서로 연속적으로 이어져 있는 재료로만 햄버거를 만들면, 햄최몇? 더보기 문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다. 예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야..
[프로그래머스] Lv.1 성격 유형 검사하기 [Python] 4가지 지표, 한 지표당 두 가지 성격이 있고, 검사지를 통해 성격 유형 검사를 합니다. 선택에 따라 각 성격에 점수가 부여되고, 합산 점수를 비교하여 최종 성격유형을 출력합니다. $($동점의 경우, 사전순$)$ 더보기 문제 설명 나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 지표 번호 성격 유형 1번 지표 라이언형$($R$)$, 튜브형$($T$)$ 2번 지표 콘형$($C$)$, 프로도형$($F$)$ 3번 지표 제이지형$($J$)$, 무지형$($M$)$ 4번 지표 어피치형$($A$)$, 네오형$($N$)$ 4개의 지표가 있으므로 성격 유형은 총 16$($=2 x 2 x 2 x 2$..
[프로그래머스] Lv.1 바탕화면 정리 [Python] 한 번의 움직임으로 바탕화면에 있는 모든 파일 드레그하기$($최단거리로$)$ 더보기 문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 $($0, 0$)$으로 시작..
[백준] 13414번 수강신청 [Python] 수강신청을 누른 순서 대로 선착순으로 처리되는데, 대기 중 다시 누르면 순번이 뒤로 밀린다. 최종 수강 완료한 학번을 출력하는 문제 수강 가능 인원, 신청을 누른 획수, 그리고 학번이 순서대로 주어진다. 더보기 문제 국민대학교에서는 매 학기 시작 전 종합정보시스템에서 수강신청을 한다. 매 수강신청마다 아주 많은 학생들이 몰려 서버에 많은 부하가 가기 때문에, 국민대학교에서는 수강신청 부하 관리 시스템을 도입하기로 결정하였다. 새로운 관리 시스템은 다음과 같은 방식으로 동작한다. 수강신청 버튼이 활성화 된 후, 수강신청 버튼을 조금이라도 빨리 누른 학생이 대기목록에 먼저 들어간다. 이미 대기열에 들어가 있는 상태에서 다시 수강신청 버튼을 누를 경우 대기목록의 맨 뒤로 밀려난다. 잠시 후 수강신청 버튼이 비..
[백준] 2628번 종이자르기 [Python] 직사각형의 자를 위치를 알려주고, 잘린 조각 중 최대 넓이를 구하는 문제 더보기 문제 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선은 왼쪽에서 오른쪽으로 번호가 붙어 있다. 점선을 따라 이 종이를 칼로 자르려고 한다. 가로 점선을 따라 자르는 경우는 종이의 왼쪽 끝에서 오른쪽 끝까지, 세로 점선인 경우는 위쪽 끝에서 아래쪽 끝까지 한 번에 자른다. 예를 들어, 의 가로 길이 10㎝이고 세로 길이 8㎝인 종이를 3번 가로 점선, 4번 세로 점선, 그리고 2번 가로 점선을 따라 자르면 와 같이 여러 개의 종이 조각으로 나뉘게 된다. 이때 가장 큰 종이 조각의 넓이는 30㎠..
[백준] 1193번 분수찾기 [Python] - 정수의 합 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 더보기 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. https://www.acmicpc.net/problem/1463 1, 2~3, 4~6, 7~10 ,,, 번째 분수는 각각 분자..
[백준] 1463번 1로 만들기 [Python] - 다이나믹 X를 3으로 나누거나 2로 나누거나 1을 빼서 가장 빠르게 1로 만드는 횟수 구하는 문제 더보기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. https://www.acmicpc.net/problem/1463 덱을 이용해서 각 연산을 한 결과를 저장하고, 가장 먼저 연산한 수를 꺼내서 1이 될 때까지 반복합니다. 0으..
[프로그래머스] Lv.1 공원 산책 [Python] 2차원 배열로 주어진 시작점 "S", 길 "O", 장애물 "X"로 이루어진 공원 정보인 park와 "방향 거"를 원소로 갖는 배열 명령을 담은 routes를 통해 명령에 따라 이동하되 장애물을 만나거나 공원을 벗어나면 그 명령은 무시하는 방식으로 최종 목적지를 반환하는 문제 더보기 문제 설명 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다. 주어진 ..