코테 공부
[이코테] 정렬 알고리즘 코드 정리 (파이썬)
array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] # 선택 정렬 for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] # 스와프 print("선택 정렬 = ", array) # 삽입 정렬 for i in range(1, len(array)): for j in range(i, 0, -1): if array[j] < array[j-1]: # 한 칸씩 왼쪽으로 이동 array[j], array[j-1] ..
![[백준] 2667번 - 단지번호붙이기 (파이썬)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv8VX5%2FbtsGkAm2YTW%2Fw4VtvPDkRKphtKDoebIrt1%2Fimg.png)
[백준] 2667번 - 단지번호붙이기 (파이썬)
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고..
[백준] 1926번 - 그림 (파이썬)
https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다. 입력 첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ..
![[이코테] 구현 - 상하좌우 (파이썬)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSAztl%2FbtsGbDb5vAd%2FYnGJtYGFO7oAJBzFV1tCk0%2Fimg.png)
[이코테] 구현 - 상하좌우 (파이썬)
내 풀이 size = int(input()) direction = list(input().split()) result = [1, 1] for i in range(len(direction)): if ((direction[i] == 'L' and result[1] == 1) or (direction[i] == 'U' and result[0] == 1) or (direction[i] == 'R' and result[1] == size) or (direction[i] == 'D' and result[0] == size)): continue elif (direction[i] == 'L'): result[1] = result[1] - 1 elif (direction[i] == 'U'): result[0] = res..
![[이코테] 그리디 알고리즘 - 곱하기 혹은 더하기 (파이썬)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJsqjh%2FbtsF9NlmE1H%2FKDNTrOkkh6ILcoA7OM8QI0%2Fimg.png)
[이코테] 그리디 알고리즘 - 곱하기 혹은 더하기 (파이썬)
내 풀이 n = list(map(int, input())) sum = 0 for i in range(len(n) - 1): if (n[i] * n[i + 1] >= n[i] + n[i + 1]): n[i + 1] = n[i] * n[i + 1] else: n[i + 1] = n[i] + n[i + 1] sum = n[i + 1] print(sum) 정답 배운 점: 결과 값을 단순히 0으로 초기화 시켰지만 정답을 확인해보니 result를 int(data[0])로 초기화하여 첫 번째 숫자를 기본값으로 설정한 것으로 보고 초기값 설정 방법을 깨달았습니다. 그리고 내가 쓴 for문 코드는 직관적으로 파악하기 힘들지만, 정답 코드를 보면서 훨씬 직관적이고 간결하게 쓰는 방법도 알게 되었다.
![[이코테] 그리디 알고리즘 - 1이 될 때까지 (파이썬)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F127Y9%2FbtsF8tVv2uS%2FaECeqIAfQwkuyIL0Ja2Re1%2Fimg.png)
[이코테] 그리디 알고리즘 - 1이 될 때까지 (파이썬)
내 풀이 n, k = map(int, input().split()) count = 0 while (n != 1): if (n % k == 0): n = n / k count += 1 else: n -= 1 count += 1 continue print(count) 정답 느낀점 오답노트 : N이 커질수록 시간 초과가 발생할 수 있기 때문에 일일히 1을 빼는건 비효율적이라는 것을 알게 되었다. N이 100억 이상의 큰 수가 되는 경우에도 효율적으로 실행하기 위해서 N이 K의 배수가 되도록 한번에 빼는 방식을 사용해야 한다. 정답 맞춰서 푸는 것도 중요하지만, 효율을 생각해서 적절한 알고리즘을 사용하고 설계하는 사고를 기르는게 더 중요하다고 느끼게 되었다.
![[백준] 14681번 - 사분면 고르기 (파이썬)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FANoZQ%2Fbtsar3695HM%2Favp9sGHrtDc5puwHxnvOu1%2Fimg.png)
[백준] 14681번 - 사분면 고르기 (파이썬)
https://www.acmicpc.net/problem/14681 14681번: 사분면 고르기 점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다. www.acmicpc.net 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 입력 첫 줄..
[백준] 2753번 - 윤년 (파이썬)
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 문제 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. 입력 ..