반응형
여기서 정답은 ChatGPT에게 물어봐서 찾아낸 답.
1. 백준 - 10926 문제 (??!)
처음 제출한 내용
A = input("")
if A == "joonas" or "baekjoon":
print(A + "??!")
이상하게 이것도 맞음 처리가 되었다. 그러나 문제에 따른 올바른 코딩은 아니다.
정답:
# 아이디 입력 받기
A = input()
# 아이디 뒤에 "??!"를 붙여서 출력
print(A + "??!")
기존에 알았던 내용
input(): 사용자가 입력한 값을 프로그램에 전달하는 함수
print(): 값을 출력하는 함수
새롭게 알게 된 내용
없음
궁금한점
없음
2. 백준 - 18108 문제 (1998년생인 내가 태국에서는 2541년생?!)
처음 제출한 내용
y = int(input())
our_y = y - (2541 - 1998)
print(our_y)
정답:
# 불기 연도 입력 받기
y = int(input())
# 서기 연도로 변환 (불기 연도에서 543 빼기)
converted_year = y - 543
# 결과 출력
print(converted_year)
기존에 알았던 내용
윗 내용과 동일
새롭게 알게 된 내용
없음
궁금한점
없음
3. 백준 - 10430 문제 (나머지)
처음 제출한 내용
A, B, C = map(int, input().split())
print((A+B)%C)
print(((A%C) + (B%C))%C)
print((A*B)%C)
print(((A%C) * (B%C))%C)
정답:
# A, B, C 입력 받기
A, B, C = map(int, input().split())
# 1. (A + B) % C
result1 = (A + B) % C
# 2. ((A % C) + (B % C)) % C
result2 = ((A % C) + (B % C)) % C
# 3. (A * B) % C
result3 = (A * B) % C
# 4. ((A % C) * (B % C)) % C
result4 = ((A % C) * (B % C)) % C
# 결과 출력
print(result1)
print(result2)
print(result3)
print(result4)
기존에 알았던 내용
map(): 주어진 함수를 반복 가능한(iterable) 객체의 각 요소에 적용하여, 그 결과를 반환하는 함수
split(): 문자열을 특정 구분자를 기준으로 나누어 리스트로 반환하는 함수
새롭게 알게 된 내용
없음
궁금한점
없음
4. 백준 - 2588 문제 (곱셈)
처음 제출한 내용
A = int(input())
B = int(input())
b = []
for i in str(B):
b.append(i)
print(A * int(b[2]))
print(A * int(b[1]))
print(A * int(b[0]))
print(A * B)
정답:
# 입력 받기
A = int(input()) # 첫 번째 세 자리 자연수
B = int(input()) # 두 번째 세 자리 자연수
# (3) 두 번째 수의 1의 자리와 첫 번째 수를 곱한 값
print(A * (B % 10))
# (4) 두 번째 수의 10의 자리와 첫 번째 수를 곱한 값
print(A * ((B // 10) % 10))
# (5) 두 번째 수의 100의 자리와 첫 번째 수를 곱한 값
print(A * (B // 100))
# (6) 두 수를 곱한 값
print(A * B)
기존에 알았던 내용
append(): 리스트의 끝에 새로운 요소를 추가하는 메서드
새롭게 알게 된 내용
없음
궁금한점
없음
5. 백준 - 11382 문제 (꼬마 정민)
처음 제출한 내용
A, B, C = map(int, input().split())
print(A+B+C)
정답:
# 입력 받기
A, B, C = map(int, input().split())
# 세 수의 합 계산
result = A + B + C
# 결과 출력
print(result)
기존에 알았던 내용
윗 내용에서 언급
새롭게 알게 된 내용
없음
궁금한점
없음
6. 백준 - 23971 문제 (ZOAC 4)
H, W, N, M = map(int, input().split())
max_rows = H // (N + 1) + 1
max_cols = W // (M + 1)
max_people = max_rows * max_cols
print(max_people)
문제 이해 및 접근
- 입력값:
- W: 열의 수
- H: 행의 수
- N: 세로로 최소 비어야 할 칸 수
- M: 가로로 최소 비어야 할 칸 수
- 출력:
- 거리두기를 지키면서 강의실에 앉을 수 있는 최대 인원 수
- 격자 좌표:
- 좌표 (i, j)에 앉은 경우, 다른 참가자는 다음과 같은 조건을 충족해야 한다:
- |i1 - i| > N (세로)
- |j1 - j| > M (가로)
- 좌표 (i, j)에 앉은 경우, 다른 참가자는 다음과 같은 조건을 충족해야 한다:
계산 방법
- H를 N+1로 나눈 몫(H // (N + 1))은 거리두기를 지키면서 앉을 수 있는 행의 수.
- W를 M+1로 나눈 몫(W // (M + 1))은 거리두기를 지키면서 앉을 수 있는 열의 수.
이제 전체 수용 인원 수는 행 수 × 열 수로 계산.
# 입력 받기
H, W, N, M = map(int, input().split())
# 거리두기를 고려한 최대 수용 가능한 행과 열 수 계산
max_rows = (H - N) // (N + 1) + 1 if H > N else 0 # (N + 1) 단위로 나누기
max_cols = (W - M) // (M + 1) + 1 if W > M else 0 # (M + 1) 단위로 나누기
# 최대 수용 가능 인원 수
max_people = max_rows * max_cols
# 결과 출력
print(max_people)
거리두기 수칙에 대한 올바른 해석
- 거리두기 조건:
- 각 참가자는 세로로 N칸 또는 가로로 M칸 이상 비워야 하므로, 이는 실제로 앉을 수 있는 자리와 비워야 할 자리의 조합을 고려해야 합니다.
- 예를 들어, 한 참가자가 (i, j)에 앉으면, 그와 같은 행(i)에서 (i, j+1)부터 (i, j+M)까지는 앉을 수 없고, 같은 열(j)에서도 (i+1, j)부터 (i+N, j)까지는 앉을 수 없습니다.
- 최대 행 수 계산:
- 최대 행 수를 계산할 때, H > N 조건은 매우 중요합니다. 이는 참가자가 앉을 수 있는 최소한의 행 수를 확인하기 위한 조건입니다.
- 만약 H <= N이면, 강의실에 앉을 수 있는 참가자가 존재할 수 없으므로 결과적으로 수용할 수 있는 최대 인원 수는 0이 됩니다.
- 최대 열 수 계산:
- 마찬가지로, 열 수를 계산할 때도 W > M 조건을 사용하여 열 수를 확인합니다.
- W <= M인 경우, 한 열에 앉을 수 있는 참가자가 없기 때문에 결과는 0이 됩니다.
기존에 알았던 내용
윗 내용에서 언급
새롭게 알게 된 내용
없음
궁금한점
없음
자기 평가
- 장점: 문제 해결 능력과 논리적 사고가 좋아진 것 같다. 특히 문제를 이해하고 해석하는 데 주의 깊어졌다. 또한, 다양한 입력 조건을 고려하는 점도 좋은 접근을 하고 있다.
- 개선할 점: 코드의 가독성을 높이기 위해 주석을 좀 더 상세하게 달아두면 좋을 것 같다. 특히 다른 사람이나 미래의 나 자신이 이해하기 쉽게 설명하는 것이 중요하다.
다음에 하면 좋을 내용:
- 문제 풀이 연습: 다양한 알고리즘 문제를 풀어도록 할 예정. 특히 정렬, 탐색, 동적 프로그래밍 같은 주제에 도전해보는 것이 좋다고 한다.
- 코드 리뷰: 다른 사람의 코드를 보고 분석해보는 시간이 있으면 좋겠다. 여러 사람의 접근 방식을 배우는 것은 많은 도움이 될 것이다.
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
코딩테스트 5일차(1)(2024.10.23) - 3문제 (2) | 2024.10.24 |
---|---|
코딩테스트 4일차(1)(2024.10.22) - 2문제 (1) | 2024.10.23 |
코딩테스트 4일차(1)(2024.10.21) - 3문제 (1) | 2024.10.21 |
코딩테스트 2일차(1)(2024.10.19) - 4 문제 (0) | 2024.10.19 |
코딩테스트 1일차(2024.10.18) - 2 문제 (2) | 2024.10.18 |