Stay Hungry Stay Foolish

전체 글 430

[SWEA] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 풀이가로 회문 검사for i in range(8): for j in range(8 - length + 1): row_slice = board[i][j:length + j] if row_slice == row_slice[::-1]: result += 1가로 방향으로 회문을 찾는 루프이다.for i in range(8)글자판의 각 행(i번째 행)을 순차적으로 확인한다.for j in range(8 - length + 1)각 행에서 length 길이의 문자열을 추출할 시작 인덱스 j 를 설정한다. 8 - le..

SWEA 2024.10.22

[자바 중급] 10. 예외 처리 2

코드를 통해 오류 발생 시뮬레이션과, 예외 처리 흐름을 알아보자.  사용자의 입력을 통해 오류를 발생시킨 후, 예외를 따로 처리하지 않고 밖으로 던진다.  오류 발생 시뮬레이션 1️⃣ 1. 어떤 종류의 오류가 발생했는지 담는 클래스public class NetworkClientExceptionV2 extends Exception { private String errorCode; public NetworkClientExceptionV2(String errorCode, String message) { super(message); //어떤 오류가 발생했는지 담는다. this.errorCode = errorCode; } //에러 코드를 조회할 수 있게 추가 p..

[파이썬] replace() 메서드

replace() 메서드문자열의 특정 부분을 다른 문자열로 교체하는 메서드이다. 원본 문자열을 변경하지 않고, 변경된 새로운 문자열을 반환한다. 문자열을 수정하거나 변형할 때 유용하게 사용된다. 📌 문자열은 불변 객체새로운 문자열을 반환한다는 것은, 문자열이 불변 객체이므로 원본 문자열은 변경되지 않는다는 것을 말한다.  기본 구문string.replace(old, new[, count])old : 교체할 부분 문자열.new : 대체할 문자열.count : 생략 가능, 교체할 횟수(지정하지 않으면 모든 old를 교체).  1️⃣ 예시 1 : 모든 부분 문자열 교체text = "apple banana apple"new_text = text.replace("apple", "orange")print(new_..

알고리즘 2024.10.22

[SWEA] 10804. 문자열의 거울상 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 풀이단순 구현b ➜ d로 변경d ➜ b로 변경p ➜ q로 변경q ➜ p로 변경변경한 후 문자열을 뒤집는다.  ※ 문자열을 변경할 수 있는 replace() 메서드도 있다. replace()를 사용해도 되지만, 코드가 번잡해지니 패스한다.  Solutiontest_case = int(input())for tc in range(1, test_case + 1): word = input() result = "" for i in word: if i == "b": result += "d" elif ..

SWEA 2024.10.22

[SWEA] 4751. 다솔이의 다이아몬드 장식 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이💡 핵심 : 규칙을 찾자 입력이 SWEA 라고 했을 때, 다음과 같은 규칙이 있다. 아래의 규칙은 모든 문자열에 적용된다. 첫 번째 줄은 ..#.두 번째 줄은 .# (네 번째 줄과 동일)세 번째 줄은 #. (다섯 번째 줄과 동일) 규칙을 이용해 완성하려면, 다음과 같은 과정이 필요하다.print(line1 * length + '.')위 구문은 문자열을 반복하고 결합하는 연산을 수행하는 구문이다.line1 * lengthline1 문자열을 length만큼 반복한다. line1은 '..#.' 이고 length가 4이므로, line1 * leng..

SWEA 2024.10.22

[SWEA] 1213. [S/W 문제해결 기본] 3일차 - String (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이sol.1 슬라이싱으로 특정 문자열 찾기if sentence[i : i + len(word)] == word: result += 1sentence의 i번째 위치부터 i + len(word) 길이만큼 잘라낸 부분이 word와 같은지 확인합니다. 이 부분이 word와 같다면, 해당 위치에서 word가 발견된 것입니다. 루프 종료 조건if i == len(sentence) - len(word) + 1: break i가 sentence에서 더 이상 word를 탐색할 수 없는 위치에 도달하면 루프를 종료합니다. 이 조건은 문자열의 끝에서 더 이상..

SWEA 2024.10.22

[SWEA] 3456. 직사각형 길이 찾기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이첫 번째 길이와 두 번째 길이가 같으면 세 번째 길이를 반환한다.두 번째 길이와 세 번째 길이가 같으면 첫 번째 길이를 반환한다.첫 번째 길이와 세 번째 길이가 같으면 두 번째 길이를 반환한다.  Solutiontest_case = int(input())for tc in range(1, test_case + 1): square = list(map(int, input().split())) result = 0 if square[0] == square[1]: result = square[2] elif square[..

SWEA 2024.10.22

[TIL] 2024년 10월 21일

파이썬fractions 모듈 fractions 모듈은 유리수(분수)를 다루기 위한 모듈로, Fraction 클래스를 사용해 분자와 분모로 구성된 정확한 유리수를 생성하고 계산할 수 있다. 소수점의 부정확성을 피하고, 분수 간의 사칙연산 및 기약 분수 표현을 지원한다.  사용 방법from fractions import Fractionx = Fraction(1, 3) # 1/3 생성y = Fraction(2, 3) # 2/3 생성print(x + y) # 출력: 1첫 번째 인자에는 분자, 두 번째 인자에는 분모를 넣어준다.내부에서 분수를 알아서 계산하고 분수 형태로 반환한다. while문에서의 dequewhile deque:while deque: 는 덱이 비어있지 않은 동안 반복문을 실행하겠..

TIL 2024.10.21

[SWEA] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡핵심 : 자료 구조 - 힙 이용 파이썬에서의 힙 - deque deque(덱)는 파이썬의 collections 모듈에서 제공하는 양방향 큐로, 리스트와 유사하지만 양쪽 끝에서 빠른 삽입과 삭제가 가능하다. 리스트와 비교해 시간 복잡도가 더 효율적이기 때문에, 양쪽에서 데이터를 자주 추가하거나 제거하는 경우 deque를 사용하는 것이 좋다.[deque에 대한 자세한 설명] 👉 https://dev-cloud.tistory.com/322   1. 큐를 생성하고 입력 받은 8개의 숫자 리스트를 담는다.data_deque = deque(data) ..

SWEA 2024.10.21

[파이썬] 자료 구조 - deque

deque 이란?deque(덱)는 파이썬의 collections 모듈에서 제공하는 양방향 큐로, 리스트와 유사하지만 양쪽 끝에서 빠른 삽입과 삭제가 가능하다. 리스트와 비교해 시간 복잡도가 더 효율적이기 때문에, 양쪽에서 데이터를 자주 추가하거나 제거하는 경우 deque를 사용하는 것이 좋다. deque 사용법먼저 collections 모듈에서 deque를 import한다.from collections import deque  1️⃣ 1. deque 생성dq = deque([1, 2, 3, 4, 5]) print(dq) 출력 결과deque([1, 2, 3, 4, 5])  2️⃣ 2. 요소 추가오른쪽 끝에 요소 추가: append()왼쪽 끝에 요소 추가: appendleft()dq.append(6) ..

알고리즘 2024.10.21

[파이썬] 리스트 컴프리헨션

리스트 컴프리헨션 (List Comprehension) 파이썬에서 간결하고 효율적으로 리스트를 생성하는 구문이다. 기존 리스트의 값을 조건에 따라 변형하거나 필터링하여 새로운 리스트를 만들 때 매우 유용하다. 리스트를 생성하는 for 루프를 한 줄로 작성할 수 있어, 코드가 짧고 가독성이 높아진다.  기본 구문[expression for item in iterable if condition] expression: 리스트에 포함될 값이나 변형된 값item: iterable의 각 요소를 나타냄iterable: 반복 가능한 객체 (예: 리스트, 문자열, 튜플 등)condition (선택적): 각 요소에 대해 적용할 조건으로, 조건이 참일 때만 요소가 포함됨 1️⃣ 예제 1: 기본 리스트 컴프리헨션squares..

알고리즘 2024.10.21

[SWEA] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이테이블 위는 N극, 아래는 S극이고 입력에서의 1은 N극, 2는 S극이다. N극 쪽에는 1이 있으면 안 되고, S극 쪽에는 2가 있으면 안 된다.   위 그림과 같이 1 다음에 2 가 있으면 교착상태라는 것이다. 한 줄씩 확인하면서 1과 2가 같이 나타나는 개수를 세어주면 된다. 현재 bit를 1이라고 정하고 시작한다.for i in range(100): bit = 1 이제 한 줄씩 확인한다.  for j in range(100): if table[j][i] == 1: bit = 2 el..

SWEA 2024.10.21

[SWEA] 3314. 보충학습과 평균 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이40점 미만이면 40점을 누적하고, 40점 이상이면 해당 점수를 누적한다.누적한 점수를 5로 나누고 int형으로 변환한다.  Solutiontest_case = int(input())for tc in range(1, test_case + 1): score = list(map(int, input().split())) result = 0 for i in score: if i

SWEA 2024.10.21

[SWEA] 5601. [Professional] 쥬스 나누기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  풀이핵심은 N분의 1을 해야 한다는 것이다. Solutiontest_case = int(input())for tc in range(1, test_case + 1): n = int(input()) print("#%d" %tc, end=' ') for i in range(n): print("%d/%d" %(1, n), end=' ') print()  👩‍💻 회고테스트 케이스 보고 매우 간단한 문제였다는 걸 알아챘지만,, 몰랐으면 헛수고 할 뻔 했다.  글만 보고 이런 문제라는 것을 이해하는 건 참 어려운 일인 것..

SWEA 2024.10.21

[SWEA] 13229. 일요일 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 풀이1. 날짜를 리스트에 모두 저장한다.days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]  2. 날짜 리스트의 길이만큼 for문을 돌린다.입력받은 것과 날짜 리스트에 들어있는 문자열과 같으면7에서 현재 날짜를 빼준다. for i in range(len(days)): if days[i] == day: result = 7 - i break  Solutiontest_case = int(input())for tc in range(1, test_ca..

SWEA 2024.10.21