본문 바로가기

반응형

코딩테스트

(12)
[프로그래머스] 달리기 경주 (lv1, Python) https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 아이디어 맨 처음엔 리스트끼리 자리를 바꿔주면 되겠다 라고 생각해서 작성해봤는데... 시간 초과 다시 보니까 입력값이 굉장히 커서 10초안에 수행될 수 없었다. 선수 이름과 순위를 키값으로 하는 딕셔너리 두 개를 선언하여 각 키의 값을 수정하는 방식으로 소스코드를 작성함. 리스트를 계속해서 갱신할 경우, 인덱스 전체가 정렬되어 시간이 많이 걸리지만, 딕셔너리의 경우 대응하는 키의 값만..
[백준] 10798번: 세로읽기(브론즈1, Python) https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 문제 해결 아이디어 입력되는 문자열에 list 함수를 사용하여, 문자열을 모두 분리 문자열 5줄이 입력되므로 for문을 사용해도 되고, while문으로 입력이 다르게 들어올 경우를 대비해도 좋다. 입력된 배열들의 길이를 확인하여 가장 긴 배열의 길이를 확인한다. 최대 길이의 배열만큼 값을 확인하고 만약 더 짧은 배열이라면 except문을 사용하여 다음 배열로 이동 최종 출력값을 저장할 변수..
[백준] 2738번: 행렬 덧셈 (브론즈5, Python) https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 문제 해결 아이디어 입력 첫 번째 줄에 배열의 모양이 제시되고, 행*2번 입력값이 들어오는 형태 C언어같이 메모리 관리를 하기 위해서는 array 선언 시 열의 갯수도 지정했겠지만... 그냥 빈 리스트로 선언하였음. 2*행 번의 for문을 통해 행보다 작으면 1차원 배열을 빈 리스트에 추가하고, 이후부터 첫번째 행부터 차례로 덧셈을 진행하였음. 답안 출력은 한 행씩 출력 소스 코드 ..
[백준] 2566번: 최댓값 (브론즈3, Python) https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제 해결 아이디어 함수 내에 최대값과 인덱스 위치를 저장할 변수 선언 (val, loc) 한 행씩 불러오며 값을 하나씩 확인하고, 크거나 같은 경우 val과 loc을 업데이트 (최대값이 두개 이상인 경우 한 곳의 위치를 출력하면 됨.) 위치를 저장할 때 1씩 더해줌 (index 0 부터 시작) loc을 리스트로 받고 출력 시 값을 풀어서 표현해줌 print(*) 소스 코드 (Python) def max_val81(..
[백준] 2444번: 별 찍기 - 7 (브론즈3, Python, for문 한번 사용) https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 해결 아이디어 1. 내 구현 코드를 여러번 확인해가면서 문제를 풀었음. 2. for문 한번에 해결할 수 있지 않을까 라는 물음에서 규칙성을 찾기 위해 노력함. 3. ans라는 문자열 변수를 선언하여 공백과 별을 추가한 후 출력 4. n이 주어졌을 때, 출력되는 행의 수는 2n-1임. (5를 입력하면 9줄이 출력돼야함.) 5. n번째 행을 기점으로 별의 수는 감소. 공백은 증가 6. n을 기준으로 n보다 작거나 같을 때의 규칙, n보다 클때의 규칙을 고민해봄. 7. n=5를 예시로 규칙 찾아보기 * *** ***** **..
[백준] 25206번: 너의 평점은 (실버5, Python) https://www.acmicpc.net/problem/25206 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 문제 해결 아이디어 1. 학점 중 P학점은 평점에 포함되지 않는다. (예외처리 필요!!) 2. 입력은 20번 들어온다. 하지만 더 많은 입력값이 들어올 것을 대비하여 예외문을 삽입 (try, except) 3. 누적 값을 저장할 변수를 미리 선언해준다. 4. 각 평점에 대응하는 딕셔너리를 미리 선언하였음. 5. 결과값 출력은 소수점 6번째 자리까지 반올림 하였음. (내 맘) 소스코드 (Python) d..
[프로그래머스] 멀리 뛰기 (lv1, Python) https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 아이디어 1. 1,2로 이루어진 조합의 합계가, 주어진 수 n을 만족하는 경우의 수를 찾음. (제 경우 일일히 확인해보았습니다.) 2. 피보나치 수열의 특성을 보임을 확인함. n cnt 이전 값과의 차 1 1 1 2 2 1 3 3 1 4 5 2 5 8 3 (1+2) 6 13 5 (2+3) 3. 1
[백준] 5597번: 과제 안 내신 분..? (브론즈5, Python) https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 문제 해결 아이디어 1. 입력값이 한번씩 28번 들어온다! 28번 받을 준비를 해야할 덧. 2. 1번부터 30번까지 범위이며, 입력값의 중복은 없음. 3. 학생 30명을 먼저 채워넣고, 숙제를 제출한 사람은 교실 밖으로 나간다고 상상했음. 리스트 밖으로 쫓아낼거임. 4. 중복값이 없으므로 python remove 메서드를 사용해도 괜찮다고 생각함. 5. 출력도 한줄로 해야돼요! 소스코..

반응형