-
프로그래머스[Python] - JadenCase 문자열 만들기, 파일명 정렬[2018 KAKAO BLIND RECRUITMENT], N진수 게임[2018 KAKAO BLIND RECRUITMENT], 삼각 달팽이프로그래머스문제정리 & Python잡다한것 2021. 7. 29. 19:38728x90반응형
JadenCase 문자열 만들기
문제 url : https://programmers.co.kr/learn/courses/30/lessons/12951
문제 내용 : JadenCase라는 것은 모든 단어 첫글자는 대문자로 만들고, 나머지 문자는 소문자로 만드는 문자열이다. 문자열 s를 JadenCase로 바꾼 문자열로 리턴하라.
알고리즘 : 단순 구현
파일명 정렬[2018 KAKAO BLIND RECRUITMENT]
문제 url : https://programmers.co.kr/learn/courses/30/lessons/17686
문제 내용 : 무지가 파일들을 정렬하려고 한다. 무지는 단순한 문자 코드 순이 아닌, 파일명에 포함된 숫자를 반영한 정렬 기능을 저장소 관리 프로그램에 구현하기로 했다.
파일명들 - 영문 대소문자, 숫자, 공백(" "), 마침표("."), 빼기 부호("-")만으로 이루어져 있다. 파일명은 영문자로 시작하며, 숫자를 하나 이상 포함하고 있다.
[문자를 나누는 기준]
- HEAD는 숫자가 아닌 문자로 이루어져 있으며, 최소한 한 글자 이상이다.
- NUMBER는 한 글자에서 최대 다섯 글자 사이의 연속된 숫자로 이루어져 있으며, 앞쪽에 0이 올 수 있다.
0
부터99999
사이의 숫자로,00000
이나0101
등도 가능하다. - TAIL은 그 나머지 부분으로, 여기에는 숫자가 다시 나타날 수도 있으며, 아무 글자도 없을 수 있다.
[정렬하는 기준]
- 파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다.
MUZI
와muzi
,MuZi
는 정렬 시에 같은 순서로 취급된다. - 파일명의 HEAD 부분이 대소문자 차이 외에는 같을 경우, NUMBER의 숫자 순으로 정렬한다. 9 < 10 < 0011 < 012 < 13 < 014 순으로 정렬된다. 숫자 앞의 0은 무시되며, 012와 12는 정렬 시에 같은 같은 값으로 처리된다.
- 두 파일의 HEAD 부분과, NUMBER의 숫자도 같을 경우, 원래 입력에 주어진 순서를 유지한다.
MUZI01.zip
과muzi1.png
가 입력으로 들어오면, 정렬 후에도 입력 시 주어진 두 파일의 순서가 바뀌어서는 안 된다.
알고리즘 : 단순 구현, 정렬
N진수 게임[2018 KAKAO BLIND RECRUITMENT]
문제 url : https://programmers.co.kr/learn/courses/30/lessons/17687
문제 내용 : 하나하나 숫자를 말하는 게임인데, 조건이 진법으로 변환하여 수를 계산하고 이에 맞는 자기 차례에 수를 말해야 한다.
- 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.
- 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.
알고리즘 : 단순 구현, 진법 변환
삼각 달팽이
문제 url : https://programmers.co.kr/learn/courses/30/lessons/68645
문제 내용 : 아래와 같이 정수 n이 들어 올때, 맨위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행하고, 첫 행부터 마지막 행까지 모두 합친 배열을 출력하라.
알고리즘 : 단순 구현, 분할 정복(?)
풀이과정 : 부분으로 나눠서 설명한다.
- 초기화 : 처음 삼각형을 채워나가기 이전에 dp(DP문제는 아니고 그냥 버릇이다.) 에다가 0으로 초기화 시켜놓고, 처음 세로 행만 쭉 담아놓는다.
- 오른쪽으로 쌓기 : index를 잘보면 현재 위치에서 y좌표만 증가한다. 이때, for 문의 n을 잘보면 단계별로 한개씩 줄어드는 횟수로 for문이 돌아간다. 이는 달팽이처럼 쌓여질때, 쌓이는 갯수가 하나씩 감소하기 때문이다.
- 대각선 위로 쌓기 : index를 잘보면 x, y좌표가 모두 감소한다.
- 아래로 쌓기 : idex를 잘보면, x좌표만 증가한다.
- 예외처리 :
- 1~n까지는 이미 초기 세팅했기 때문에, 시작하는 숫자는 n+1(idx) 일 것이다. 이 숫자가 number(쌓이는 갯수)보다 커진다면 그만 쌓도록 예외처리한다.(idx < number + 1)
- 다음 예외처리는 중간에 멈출 경우를 생각한다. 그래서 매 순간마다 number와 비교해서 넘어간다면 그만 돌도록, flag로 처리해 버린다.
추가 : 본 문제는 네이버 부스트캠프 AI Tech 코테에도 비슷한 유형으로 출제가 되었다!
이상 - 프로그래머스 Level2를 모두 다풀었다!!😃 ✊
이제 Level 3를 정복해야지! :)
반응형'프로그래머스문제정리 & Python잡다한것' 카테고리의 다른 글
프로그래머스[Python] - 단어 변환, 이중우선순위큐, 2xn 타일링 (0) 2021.08.01 프로그래머스[Python] - 네트워크, 등굣길 (0) 2021.07.31 프로그래머스[Python] - 최댓값과 최솟값, 최솟값 만들기, 행렬의 곱셈, N개의 최소공배수 (0) 2021.07.28 프로그래머스[Python] - 다음 큰 숫자, 땅따먹기, 숫자의 표현 (0) 2021.07.25 프로그래머스[Python] - 압축[2018 KAKAO BLIND RECRUITMENT] (0) 2021.07.25