Coding Test/BaekJoon_Python
-
DFS 문제를 통해 여러 시행착오를 거칠 필요가 있다고 생각했던 나는 한 문제를 더 찾아서 풀기 시작했고, 재귀 함수를 이용했기에 발생했던 런타임 에러가 발생했다 해결법도 찾았고, 그 방법까지 해서 이번 글에 포스팅하려고 한다 문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 분석 이 문제는 DFS를 이용하여 블록단위 탐색을 이용하면 되지만 몇 가지 유의사항이 존재한다 그래프 형태로 존재하는 것이 아닌 좌표단위로 존재하는 것 -> 가상의 그래프 맵을 만든다 배추밭이 굉장히 넓어졌을 때 재귀를 이용할 경우 깊이의 ..
BaekJoon - 1012번: 유기농 배추 (그래프, 탐색)DFS 문제를 통해 여러 시행착오를 거칠 필요가 있다고 생각했던 나는 한 문제를 더 찾아서 풀기 시작했고, 재귀 함수를 이용했기에 발생했던 런타임 에러가 발생했다 해결법도 찾았고, 그 방법까지 해서 이번 글에 포스팅하려고 한다 문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 분석 이 문제는 DFS를 이용하여 블록단위 탐색을 이용하면 되지만 몇 가지 유의사항이 존재한다 그래프 형태로 존재하는 것이 아닌 좌표단위로 존재하는 것 -> 가상의 그래프 맵을 만든다 배추밭이 굉장히 넓어졌을 때 재귀를 이용할 경우 깊이의 ..
2023.02.15 -
SM 마에스트로 준비가 한창인 와중, DFS에 대해 자신감이 생겼다 싶어서 도전 해 본 문제이다 한 번에 맞춰 기분이 좋은 문제였다 문제 문제 분석 이 문제는 DFS를 이용해서 풀 수 있다. 재귀적인 방법을 통해 하나를 발견하면 상, 하, 좌, 우로 이동하며 재탐색을 하는 과정을 거친다 그리고 DFS 한 번 실행될 때마다 단지 하나가 1 -> 0으로 바뀌므로 그 타이밍에 count + 1 하는 방법을 생각했다 후에 한 DFS 사이클이 끝날 때마다 count를 초기화시키는 방법으로 단지 별 건물 수를 세었다 코드 작성 N = int(input()) house = [] for i in range(N): house.append(list(map(int, input()))) # 단지의 건물 개수를 담을 변수 co..
BaekJoon - 2667번: 단지번호붙이기 (그래프, 탐색)SM 마에스트로 준비가 한창인 와중, DFS에 대해 자신감이 생겼다 싶어서 도전 해 본 문제이다 한 번에 맞춰 기분이 좋은 문제였다 문제 문제 분석 이 문제는 DFS를 이용해서 풀 수 있다. 재귀적인 방법을 통해 하나를 발견하면 상, 하, 좌, 우로 이동하며 재탐색을 하는 과정을 거친다 그리고 DFS 한 번 실행될 때마다 단지 하나가 1 -> 0으로 바뀌므로 그 타이밍에 count + 1 하는 방법을 생각했다 후에 한 DFS 사이클이 끝날 때마다 count를 초기화시키는 방법으로 단지 별 건물 수를 세었다 코드 작성 N = int(input()) house = [] for i in range(N): house.append(list(map(int, input()))) # 단지의 건물 개수를 담을 변수 co..
2023.02.15 -
분명 모든 테스트 케이스는 다 제대로 된 답변이 뜨는데 왜 이 문제는 정답이 아니라고 할까? 라고 생각을 했었다 하지만 이는 문제를 또다시 제대로 읽지 못 한 나의 잘못으로 인해 쌩 고생을 하게 되었고, 결국 생각지도 못한 곳에서 해결방법을 찾아내었다 문제 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 문제 발생 지점 여기서 나는 모든 케이스에 대한 알고리즘을 잘 풀었었다 하지만 '입력은 여러 개의 테스트 케이스로 이루어져 있다'에 대한 부분을 간과하였고, 이 부분을 해결하자 문제가 해결되었다 코드 작성 # 풀이..
BaekJoon - 6550번: 부분 문자열 (문자열, 그리디 알고리즘)분명 모든 테스트 케이스는 다 제대로 된 답변이 뜨는데 왜 이 문제는 정답이 아니라고 할까? 라고 생각을 했었다 하지만 이는 문제를 또다시 제대로 읽지 못 한 나의 잘못으로 인해 쌩 고생을 하게 되었고, 결국 생각지도 못한 곳에서 해결방법을 찾아내었다 문제 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 문제 발생 지점 여기서 나는 모든 케이스에 대한 알고리즘을 잘 풀었었다 하지만 '입력은 여러 개의 테스트 케이스로 이루어져 있다'에 대한 부분을 간과하였고, 이 부분을 해결하자 문제가 해결되었다 코드 작성 # 풀이..
2023.02.12 -
SW 마에스트로 1차코테 문제집의 두 개 있는 암호 해독 문제 중 첫 번째이다 1차코테인데 어렵겠어? 하고 들어갔다가 1시간을 붙잡고 있는 대참사가 벌어졌었다 문제 14584번: 암호 해독 로마의 장군 카이사르는 로마군의 작전을 적이 모르게 하기 위하여 암호를 사용했다. 카이사르는 다음과 같이 문장에 있는 모든 알파벳 글자를 몇 칸 뒤의 알파벳으로 바꾸는 방식으로 암호를 www.acmicpc.net 문제해석 문제 잘 읽어보기 문제 초반에 나와있는 17칸 뒤를 믿지 말 것 당신은 카이사르가 어떤 방법으로 문장을 암호화하는지는 알고 있지만 카이사르가 몇 칸 뒤의 알파벳으로 바꾸는지는 모른다. -> 결론은 알파벳을 하나씩 뒤로 밀어보면서 대조 해보아야 한다 N개의 사전 단어 중 하나라도 들어가 있다면 조건 충..
BaekJoon - 14584번: 암호 해독 (문자열, 브루트포스 알고리즘)SW 마에스트로 1차코테 문제집의 두 개 있는 암호 해독 문제 중 첫 번째이다 1차코테인데 어렵겠어? 하고 들어갔다가 1시간을 붙잡고 있는 대참사가 벌어졌었다 문제 14584번: 암호 해독 로마의 장군 카이사르는 로마군의 작전을 적이 모르게 하기 위하여 암호를 사용했다. 카이사르는 다음과 같이 문장에 있는 모든 알파벳 글자를 몇 칸 뒤의 알파벳으로 바꾸는 방식으로 암호를 www.acmicpc.net 문제해석 문제 잘 읽어보기 문제 초반에 나와있는 17칸 뒤를 믿지 말 것 당신은 카이사르가 어떤 방법으로 문장을 암호화하는지는 알고 있지만 카이사르가 몇 칸 뒤의 알파벳으로 바꾸는지는 모른다. -> 결론은 알파벳을 하나씩 뒤로 밀어보면서 대조 해보아야 한다 N개의 사전 단어 중 하나라도 들어가 있다면 조건 충..
2023.02.11 -
과제를 해 온 사람은 이렇게나 많은데.. 그렇다면 안 해 온 사람은 어떻게 알아낼까?? 이에 대한 문제를 풀어보도록 하겠다 ※ 한 번 한 번 예제를 돌려보기가 굉장한 노가다인 점, 유의하길 바란다 ※ 안한 사람 = Someone Who didn't 문제 링크 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 코드 작성 순서 제출 한 과제 목록을 불러올 list 생성 전체 학생 번호 list 생성 제출한 학생 목록 list에 넣기 전체 학생 목록 list에 넣기 전체 학생 목록과 제출한 학생 목록의 ..
BaekJoon - 5597번: 과제 안 내신 분..? (1차원 배열, PYTHON)과제를 해 온 사람은 이렇게나 많은데.. 그렇다면 안 해 온 사람은 어떻게 알아낼까?? 이에 대한 문제를 풀어보도록 하겠다 ※ 한 번 한 번 예제를 돌려보기가 굉장한 노가다인 점, 유의하길 바란다 ※ 안한 사람 = Someone Who didn't 문제 링크 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 코드 작성 순서 제출 한 과제 목록을 불러올 list 생성 전체 학생 번호 list 생성 제출한 학생 목록 list에 넣기 전체 학생 목록 list에 넣기 전체 학생 목록과 제출한 학생 목록의 ..
2022.11.01 -
찾고자 하는 정수를 찾는 프로그램을 짜는 문제이며, 생각보다 간단하게 풀 수 있다 ※ 정수 = essence 문제 링크 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net 코드 작성 순서 주어진 정수 N 입력하기 정수를 담을 list 생성하기 찾으려는 정수 v 입력받기 list에서 v를 count한 값 출력하기 # 1.주어진 정수 N 입력 N = int(input()) # 2.정수를 담을 list생성 essence = list(map(int, input().split())) # 3.찾으려는 정수 v 입..
BaekJoon - 10807번: 개수 세기 (1차원 배열, PYTHON)찾고자 하는 정수를 찾는 프로그램을 짜는 문제이며, 생각보다 간단하게 풀 수 있다 ※ 정수 = essence 문제 링크 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net 코드 작성 순서 주어진 정수 N 입력하기 정수를 담을 list 생성하기 찾으려는 정수 v 입력받기 list에서 v를 count한 값 출력하기 # 1.주어진 정수 N 입력 N = int(input()) # 2.정수를 담을 list생성 essence = list(map(int, input().split())) # 3.찾으려는 정수 v 입..
2022.11.01 -
단어를 입력하고 알파벳이 어떤 것이 들어가있는지를 알아맞추는 코드를 짜는 문제이다 문제 링크 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 코드 작성 순서 문자열 S 입력 알파벳 목록 alphabets 입력 각각의 alphabets 요소들에 대해 위치 확인하는 반복문 안에 들어있으면 find함수의 값 출력 find = 찾은 목표의 첫 번째 위치를 가져온다 3.2 예외처리 -1출력 # 1. 문자열 S 입력 S = input() # 2. 알파벳 목록 alphabets 입력 alphabets = 'ab..
BaekJoon - 10809번: 알파벳 찾기 (문자열, PYTHON)단어를 입력하고 알파벳이 어떤 것이 들어가있는지를 알아맞추는 코드를 짜는 문제이다 문제 링크 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 코드 작성 순서 문자열 S 입력 알파벳 목록 alphabets 입력 각각의 alphabets 요소들에 대해 위치 확인하는 반복문 안에 들어있으면 find함수의 값 출력 find = 찾은 목표의 첫 번째 위치를 가져온다 3.2 예외처리 -1출력 # 1. 문자열 S 입력 S = input() # 2. 알파벳 목록 alphabets 입력 alphabets = 'ab..
2022.11.01 -
문제 링크 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 작성 순서 피보나치의 수열 입력받을 함수 / 리스트 생성 n번째의 값이 나올 때까지 피보나치의 수열을 계산하는 반복문 생성 결괏값 return 하여 함수 마무리 n 정수형으로 입력 출력 Process 1 > 피보나치의 수열 입력받을 함수 / 리스트 생성 함수 Fibon 생성, 리스트 fib 생성 피보나치의 수열의 0번째와 1번째 수는 0, 1이다 def Fibon(n): fib = [0, 1] Process 2 >..
BaekJoon - 2747번: 피보나치 수 (수학/구현, PYTHON)문제 링크 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 작성 순서 피보나치의 수열 입력받을 함수 / 리스트 생성 n번째의 값이 나올 때까지 피보나치의 수열을 계산하는 반복문 생성 결괏값 return 하여 함수 마무리 n 정수형으로 입력 출력 Process 1 > 피보나치의 수열 입력받을 함수 / 리스트 생성 함수 Fibon 생성, 리스트 fib 생성 피보나치의 수열의 0번째와 1번째 수는 0, 1이다 def Fibon(n): fib = [0, 1] Process 2 >..
2022.10.12 -
문제 링크 15953번: 상금 헌터 첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다. 다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. 각 줄에는 두 개의 음이 아닌 www.acmicpc.net 코드 작성 순서 2017 카카오 등수에 따른 상금 list 추가하기 2018 카카오 등수에 따른 상금 list 추가하기 상상력을 발휘해 가정할 횟수 T 입력문 생성, T회만큼 반복하는 반복문 생성 2017, 2018 카카오 페스티벌에서 달성한 등수를 입력받을 a, b선언 상금 등수 이탈 시 a or b의 값을 0으로 바꿔주는 조건문 작성 받을 상금 원 단위로 출력 Process 1 > 2017 카카오 등수에 따른 상금 list 추가하기 순..
BaekJoon - 15953번: 상금 헌터 (카카오 코드 페스티벌, PYTHON)문제 링크 15953번: 상금 헌터 첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다. 다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. 각 줄에는 두 개의 음이 아닌 www.acmicpc.net 코드 작성 순서 2017 카카오 등수에 따른 상금 list 추가하기 2018 카카오 등수에 따른 상금 list 추가하기 상상력을 발휘해 가정할 횟수 T 입력문 생성, T회만큼 반복하는 반복문 생성 2017, 2018 카카오 페스티벌에서 달성한 등수를 입력받을 a, b선언 상금 등수 이탈 시 a or b의 값을 0으로 바꿔주는 조건문 작성 받을 상금 원 단위로 출력 Process 1 > 2017 카카오 등수에 따른 상금 list 추가하기 순..
2022.10.11 -
나는 왜 이 문제를 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 3번이나 뻘짓하면서 답을 알아낸 나를 칭찬한다 오답 List print() 정ㅋ벅ㅋ print('정ㅋ벅ㅋ') 이렇게 내가 생각해 보아도 어이가 없는 코드들을 작성하다가 보니 알고리즘은 필요없었다 그저 1차원적인 생각이 필요했을 뿐 이로인해 나의 생각은 더욱 유연해졌다
BaekJoon - 1237번: 정ㅋ벅ㅋ(1 차원 생각, PYTHON)나는 왜 이 문제를 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 3번이나 뻘짓하면서 답을 알아낸 나를 칭찬한다 오답 List print() 정ㅋ벅ㅋ print('정ㅋ벅ㅋ') 이렇게 내가 생각해 보아도 어이가 없는 코드들을 작성하다가 보니 알고리즘은 필요없었다 그저 1차원적인 생각이 필요했을 뿐 이로인해 나의 생각은 더욱 유연해졌다
2022.10.06 -
문제 분석 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하기 정답코드 def solve(a): return sum(a) 정말 간단하게도 sum 함수를 이용해 여러 정수들의 합을 구하는 코드를 간결하게 나타낼 수 있다.
BaekJoon - 15596번: 정수 N개의 합(함수, PYTHON)문제 분석 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하기 정답코드 def solve(a): return sum(a) 정말 간단하게도 sum 함수를 이용해 여러 정수들의 합을 구하는 코드를 간결하게 나타낼 수 있다.
2022.09.05 -
다소 재치있는 제목을 가지고 있는 이 문제는 대학생 새내기들이 가지고 있는 흔한 생각인"나는 반에서 평균 이상은 하고 있겠지 ㅋㅋ" 에 대한 슬픈 진실을 알려주기 위해 만들어진 문제라고 한다. 문제 분석 테스트 케이스의 개수 C테스트 케이스의 학생 수, 학생 수 만큼의 점수를 입력 입력받은 점수의 평균값을 구한 후 구성원 중 몇 %가 평균을 넘는 지 구하는 문제 제약 학생 수는 1~1000의 정수 점수는 0~100의 정수 입력 5 5 50 50 70 80 100 7 100 95 90 80 70 60 50 3 70 90 80 3 70 90 81 9 100 99 98 97 96 95 94 93 91 출력 40.000% 57.143% 33.333% 66.667% 55.556% 유의사항 소숫점 셋째 자리까지 모..
BaekJoon - 4344번: 평균은 넘겠지(1차원 배열, PYTHON)다소 재치있는 제목을 가지고 있는 이 문제는 대학생 새내기들이 가지고 있는 흔한 생각인"나는 반에서 평균 이상은 하고 있겠지 ㅋㅋ" 에 대한 슬픈 진실을 알려주기 위해 만들어진 문제라고 한다. 문제 분석 테스트 케이스의 개수 C테스트 케이스의 학생 수, 학생 수 만큼의 점수를 입력 입력받은 점수의 평균값을 구한 후 구성원 중 몇 %가 평균을 넘는 지 구하는 문제 제약 학생 수는 1~1000의 정수 점수는 0~100의 정수 입력 5 5 50 50 70 80 100 7 100 95 90 80 70 60 50 3 70 90 80 3 70 90 81 9 100 99 98 97 96 95 94 93 91 출력 40.000% 57.143% 33.333% 66.667% 55.556% 유의사항 소숫점 셋째 자리까지 모..
2022.09.04