본문 바로가기

🔅코딩테스트 공부🔅213

[백준] 17413번 단어 뒤집기2(python) https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 1. 난이도 실버3 2. 내가 작성한 코드 answer = [] check = True #괄호가 열려있는지 확인 string = list(input()) local = "" for i in range(len(string)): if string[i] == "": #괄호가 닫히면 answer에 local값을 넣어주고 true로 변경 local += string[i] a.. 2023. 4. 21.
[프로그래머스] Level2 타겟 넘버(python) https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 풀이 재귀 함수를 이용해서 풀었다. 1. numbers에 들어있는 숫자를 [+현재 값, -현재 값]으로 나누어 재귀를 돌려줬다. 2. 재귀를 반복하며 누적합에 현재 값을 더해준다. 3. number를 한 번 다 돌았을 경우 누적합이 target number와 같으면 cnt +=1 4. cnt를 return 해주면 된다. cnt = 0 def solution(numbers, tar.. 2023. 4. 21.
[프로그래머스] Level2 후보키(python) https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 해결 방법 for문 진행 중, 최소성을 만족시키는 걸 지웠더니 단단히 꼬여서 5시간은 걸린 듯 하다. 그래도 끝까지 풀었다는 것에 만족 내 코드는 너무 비효율적이라,, 일단 블로그 포스팅 해놓고 다음에 리팩토링하러 와야겠다 지금은 힘이 하나도 업삼ㅁ,,, from itertools import combinations def solution(relation): coms = [] attri.. 2023. 4. 20.
[백준] 20291 파일 정리(python) https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 1. 난이도 실버 3 2. 내가 작성한 코드 확장자 별 개수를 세면 되기 때문에 딕셔너리를 이용했다. 1. split(".")을 통해 파일명과 확장자를 분리해준다. 2. key값(확장자명)인 딕셔너리에서, 입력된 확장자가 들어온 적이 없으면 새로 넣어주고 3. 들어온 적 있으면 +1 로 카운팅해준다. 4. key값만 빼서 사전순으로 정리해 준 후 5. 키(확장자명)와 value(파일 개수)를 함께 출력한.. 2023. 4. 20.
[백준] 12933번 오리(python) https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net 1. 난이도 실버 3 2. 내가 작성한 코드 사실 문제 자체는 어렵지 않은데 반례를 못 잡아서 그걸 해결하는 부분에서 오~~랜 시간이 걸렸다. 오죽하면 백준 질문게시판에 반례 문의를 남길 정도,, 놓치기 쉬운 부분은 "오리가 울다가 멈췄을 때"인 거 같긴 한데 내가 틀린 이유는 k로 끝난 오리가 있는 여부를 True or False로만 확인했다는 점이다. 이렇게 하면 quack로 끝난 울음소리(최소 오리의 수) 2개 이.. 2023. 4. 20.
[프로그래머스] Level2 오픈채팅방(python) https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 풀이 user_id 라는 고윳값(key)은 그대로 두고 nickname(value)를 변경시키는 문제라서 딕셔너리를 사용했다. Enter나 Change의 경우 nickname으로 value를 다시 변경할 수 있도록 처리해 주고, Enter나 Leave일 경우 출력되어야 하기 때문에 "들어왔습니다" 혹은 "나갔습니다"로 변경해 준다. 이후 전체를 조건에 맞게 변경하면 된다. - 첫.. 2023. 4. 19.
[백준] 1747번 소수&팰린드롬(python) https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 1. 난이도 실버1 주의할 부분 1. n으로 1이 주어진 경우 2가 출력되어야 한다. => 예외 처리 필요 2. 주어진 n의 범위가 1000000이지 소수&팰린드롬의 조건을 만족하는 수의 범위가 아니다! 따라서 for문의 범위를 더 크게 잡아줘야 한다. 나는 이 부분을 놓쳐서 엄청나게 틀렸고, 구글링을 한 결과 1000000보다 큰 수 중 조건을 만족하는 가장.. 2023. 4. 19.
[프로그래머스] Level2 구명보트(python) https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 풀이 이진탐색 쓰면 되나? 라고 생각하긴 했지만 투 포인터를 이용했다. 1. 사람들을 몸무게를 기준으로 정렬시켜 준다. 2. 몸무게의 값이 제한 무게보다 큰 경우 그 위치부터 끝까지 아예 제외시킨다. (문제의 조건에 구출할 수 없는 경우의 수는 없다고 나와있네욥ㅎㅎ) 3. start와 end를 이동시키며 2명씩 태울 수 있는 수를 조사한다. - start는 people 중 가장 .. 2023. 4. 18.
[백준] 1913번 달팽이(python) https://www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 1. 난이도 실버3 2. 내가 작성한 풀이 숫자가 커지는 방향으로 구현하면 방향전환이 너무 많이 일어날 것 같아 큰 수 부터 작은 수를 채우는 방향으로 구현했다. 1. 배열을 n*n으로 선언한다. 2. 각 layer 마다 왼쪽 꼭짓점은 (i,i)값으로 채워주고, 아래, 오른쪽, 위, 왼쪽 순서대로 이동한다. + 이미 왼쪽 꼭짓점이 채워져있기 때문에 왼쪽으로 이동할 경우 1번 덜 움직인다. 3. 2번.. 2023. 4. 18.