# SW Expert Academy

300개의 포스트

[SW Expert Academy] 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (C++)

1244 SW Expert Academy [S/W 문제해결 응용] 2일차 - 최대 상금 🗄 문제 문제의 경우 무단 복제를 금지한다고 작성되어 있으므로 1244 번을 찾아보시면 될 것 같습니다 ! 간단하게 요약하자면 다음과 같다. 주어진 숫자를 주어진 기회만큼 교환하여 최대 금액을 반환 그냥 최대 금액 ❌ 주어진 교환횟수 만큼 교환한 최대 금액 ⭕ 🕢 코드 💭 풀이 이 문제에서 가장 중요한 포인트가 바로 교환횟수 만큼 교환해야 한다. 라는 점이다. 그냥 최댓값을 구하는 것이 아닌 것에 주의해야한다. 일단 최댓값 을 위해서는 앞으로 갈 수록 큰 수가 와야 하기 때문에, 비교할 원소의 기준 인덱스(idx)와 그 이후의 원소 값을 비교해야 한다. 따라서 2중 loop 를 돌 때 i = idx, j = i + 1 로 지정해 주었다

2023년 8월 30일
·
0개의 댓글
·

[SW Expert Academy] 1206 (C++)

1206 SW Expert Academy [S/W 문제해결 기본] 1일차 - View 🍃 문제 문제의 경우 무단 복제를 금지한다고 작성되어 있으므로 1206 번을 찾아보시면 될 것 같습니다 ! 간단하게 요약하자면 다음과 같다. 어떠한 빌딩은 창문을 열었을 때 좌/우 최소 2 의 시야를 확보해야 전망이 보이게 된다. 조망권이 확보된 세대의 수를 반환하자. 👐🏻 코드 ⛪ 풀이 문제를 보고나서 빌딩의 수가 크지 않다면 각 빌딩의 높이 배열만 있으면 충분하다고 생각했다. → 다행히 가로가 최대 1000이라고 명시 되어 있다. 따라서 빌딩의 높이를 배열에 담고, 왼쪽 빌딩 2개와 오른쪽 빌딩 2개의 높이 중 최대 높이를 구해주었다. (max_h) 현재 빌딩의 높이와 max_h 의 차이 (해당 빌딩에서 전망이 확보된 세대수) 를 answer 에 계속 더해 주면서 전망이 확보된 빌딩의 세대

2023년 8월 2일
·
0개의 댓글
·

[SWEA] #2068. 최대수 구하기

배열에 저장된 값들 중 최대값을 찾는 기본 알고리즘을 활용하는 문제이다.

2023년 6월 26일
·
0개의 댓글
·

[SWEA] #2070. 큰 놈, 작은 놈, 같은 놈

앞으로의 업로드는 정답 처리를 위한 코드가 아닌, 파일 입출력을 고려한 정상 작동하는 코드가 대상이다. 따라서, 정답 제출 시에는 알맞은 양식에 맞게 변형해야 할 것이다. 굳이 해당 문제에서 헷갈릴만한 부분을 찾자면, 한문자를 저장하는 char 자료형의 변수에 값을 대입할 때 큰따옴표("")가 아닌 작은 따옴표('') 를 써야한다는 것이다. 문자열이 아니기 때문!

2023년 6월 26일
·
0개의 댓글
·

[SWEA] #2071. 평균값 구하기

다음은 CLion 환경에서 파일 입출력까지 고려한, 정상 작동하는 코드이다. 그리고, 아래는 정답 처리를 위한 제출본이다. 이 문제의 핵심은 출력 형식을 맞추는 것이었다. 즉, 10으로 나누되 반올림을 하기 위해 나누는 대상인 10을 형변환해줘야 하는 문제이다. 이 부분만 잘 해결을 하면 어렵지 않게 풀 수 있는 문제이다.

2023년 6월 26일
·
0개의 댓글
·

[SWEA] #2072. 홀수만 더하기

다음은 cLion 환경에 작성한 코드이다. 처음 경험해보는 코딩 사이트인데, 제출 조건이 좀 어색하다. 분명 파일입출력을 감안하면 위 코드대로 제출하는 것이 맞는데, 제출할 때에는 표준입출력을 사용하라고 한다. 따라서 나는 다음과 같이 제출하여 정답 처리를 받을 수 있었다. 익숙해져보자.

2023년 6월 26일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-4676-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 입력값으로부터 테스트 케이스의 수 T를 받습니다. T번 반복하면서 각 테스트 케이스에 대한 입력값을 받습니다. 문자열과 하이픈의 개수 및 위치를 입력받습니다. 하이픈을 문자열에 삽입하여 새로운 문자열을 생성합니다. 생성된 문자열을 출력합니다. ChatGPT 문제풀이와의 비교 > ChatGPT 코드 시간복잡도: O(T * (L + H)) > 내 코드 시간복잡도: 전체 시간 복잡도는 O(T * (L + H)) > 코드 효율성 동일하다. 문제출처 & 깃허브 sw expert academy [github](https://github.c

2023년 5월 12일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-5789-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 입력값으로부터 테스트 케이스의 수 T를 받습니다. T번 반복하면서 각 테스트 케이스에 대한 입력값을 받습니다. 길이가 N이고 모든 상자의 값이 0인 리스트를 생성합니다. Q번 반복하면서 각 작업에 대해 L부터 R까지의 상자 값을 작업 번호로 변경합니다. 최종적으로 변경된 상자의 값들을 출력합니다. ChatGPT 문제풀이와의 비교 > ChatGPT Code 시간복잡도: 전체 시간 복잡도는 O(T * (N + Q * (R - L + 1))) > 내 코드 시간복잡도: O(T * (N + Q)) > 동일한 효율성을 가진다. 문제출처 & 깃허브 [sw expert academy](https://swexpertacade

2023년 5월 12일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-10912-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 주어진 문제를 해결하기 위해 다음과 같은 접근 방식을 사용할 수 있습니다: 입력값으로부터 테스트 케이스의 수 T를 받습니다. T번 반복하면서 각 테스트 케이스에 대한 입력값을 받습니다. 각 테스트 케이스에서 같은 문자를 짝지어 제거하고, 남은 문자를 구합니다. 만약 남은 문자가 없다면 "Good"을 출력하고, 그렇지 않으면 남은 문자를 사전 순서대로 정렬하여 출력합니다. ChatGPT 문제풀이와의 비교 > ChatGPT Code: 위 코드의 전체 시간 복잡도는 다음과 같이 계산됩니다 T번의 테스트 케이스 반복: O(T) 각 테스트 케이스에서 문자열을 순회하며 등장 횟수를 세는 과정: O(N) (N은 문자열

2023년 5월 12일
·
0개의 댓글
·
post-thumbnail

2806. N-Queen

2806. N-Queen 문제요약 NxN보드가 주어졌을 때 N개의 퀸을 서로 다른 두 퀸이 공격하지 못하게 놓는 경우의 수는 몇 가지가 있을까? 퀸은 상하좌우,대각선 위에 있는 말을 공격할 수 있다. 문제풀이(처음 풀었던 답) 퀸이 처음 갈 수 있는 경로 16개중 처음 경로 (0,0)일 때를 생각해보자 즉 색칠된 부분은 퀸이 놓을 수 없는 자리이다. 색칠되지 않는 부분만이 퀸이 놓을 수 있는 자리이다. 두 번째 깊이에서 퀸이 놓을 수 있는 경로 6개중 처음 경로 (1, 2)일 때를 생각해보자 ![](https://velog.velcdn.com/images/qjatjs123123/post/a3e8b6a1-6b37-44b6-b116-3547f43220b2/image.p

2023년 5월 11일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-14555-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 위의 코드에서 countballs 함수는 문자열 s에서 잡초를 제거하여 초원에 놓을 수 있는 공의 최소 개수를 계산하는 함수입니다. 이 함수는 문자열을 한 글자씩 확인하면서 열린 괄호 (가 나오면 opencount 변수를 증가시키고, 닫힌 괄호 )가 나오면 opencount 변수를 감소시킵니다. 만약 닫힌 괄호를 만났는데 opencount가 0이라면 해당 공은 다른 공과 겹치지 않으므로 공의 개수를 추가로 늘립니다. 이렇게 잡초를 제거한 후에도 남아있는 open_count는 겹치지 않는 열린 괄호의 개수를 의미하므로 이를 공의 개수에 더해줍니다. 최종적으로 구해진 공의 개수가 최소 개수가 됩니다. ChatGPT

2023년 5월 11일
·
0개의 댓글
·
post-thumbnail

3032. 홍준이의 숫자 놀이

3032. 홍준이의 숫자 놀이 문제 요약 두 자연수 A와 B를 정한 후, Ax + By = 1이 되는 x와 y를 계산하는 프로그램을 작성하시오 유클리드 호제법 12345와 123의 최대공약수를 구해보자 즉 a를 b로 나눈 나머지가 r이라했을 때 GCD(a,b) = GCD(b,r)을 이용하여 구현한 것이다. 확장된 유클리드 호제법 ![](https://velog.velcdn.com/images/qjatjs123123/post/2c1d576a-11a2-400e-988e-b62bfa2f5e0a

2023년 5월 8일
·
0개의 댓글
·

[SW Expert Academy] - 1966 숫자를 정렬하자 JAVA

문제 링크 테스트 케이스가 50보다 작아서 버블정렬을 사용해도 되지만 그냥 Arrays.sort() 사용해서 풀었다. > ### 수도코드] T(테스트 케이스 수) for(tc : 1 ~ T){ N(해당 테스트 케이스의 숫자 개수) A[N] 선언 for( i : 0 ~ N ) { A[]에 숫자 넣어주기 } A[] 정렬 for( k : 0 ~ N ) { A[] 출력 }

2023년 5월 7일
·
0개의 댓글
·
post-thumbnail

3282. 0/1 Knapsack

3282. 0/1 Knapsack 0/1 Knapsack알고리즘은 다이나믹 프로그래밍으로 해결할 수 있다. 가방에 담을 수 있는 물건의 부피와 가치는 다음과 같다. DP 테이블을 만들어 보자 물건 1일 때이다. 생각할 수 있는 경우의 수는 물건1을 골랐을 때, 물건1을 고르지 않았을 때이다. 물건1을 골랐을 때 가치는 2 + 0(0행에서의 나머지 부피값)이다. 예를 들어보자면 부피가 3일 때를 생각해보자 물건1을 고르면 가치는 2가 되고 나머지부피 3-2=1을 (0행, 부피 1일 때)값 0을 가져

2023년 5월 5일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-13229-Python

코드 ChatGPT Code ChatGPT 문제풀이 > 주어진 문제에서는 입력으로 주어진 요일(S)로부터 다음 일요일까지 남은 일수를 계산해야 합니다. 문제를 해결하기 위해서는 요일의 순환 패턴을 이해하고, 주어진 요일(S)로부터 일요일까지 남은 일수를 계산하는 로직을 작성해야 합니다. 주어진 문제에서 요일은 "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" 중 하나로 주어집니다. 이들은 일주일의 순환 패턴을 가지므로 다음 일요일까지는 일주일 단위로 반복됩니다. 따라서, 다음 일요일까지 남은 일수를 계산하기 위해 다음과 같은 절차를 따를 수 있습니다: 주어진 요일(S)를 기반으로 일요일까지의 남은 일수를 계산합니다. 계산된 남은 일수를 출력합니다. ChatGPT 문제풀의와의 비교 > ChatGPT 코드 시간복잡도: 전체 코드의 시간 복잡도는 O(T) > 내 코드 시간복잡도: O(T) > 효율성 동일. 문제출

2023년 5월 5일
·
0개의 댓글
·
post-thumbnail

[SW Expert Academy] 1219 [S/W 문제해결 기본] 4일차 - 길찾기

그림과 같이 도식화한 지도에서 A도시에서 출발하여 B도시로 가는 길이 존재하는지 조사하려고 한다. 길 중간 중간에는 최대 2개의 갈림길이 존재하고, 모든 길은 일방 통행으로 되돌아오는 것이 불가능하다. 다음과 같이 길이 주어질 때, A도시에서 B도시로 가는 길이 존재하는지 알아내는 프로그램을 작성하여라. A와 B는 숫자 0과 99으로 고정된다. 모든 길은 순서쌍으로 나타내어진다. 위 예시에서 2번에서 출발 할 수 있는 길의 표현은 (2, 5), (2, 9)로 나타낼 수 있다. 가는 길의 개수와 상관없이 한가지 길이라도 존재한다면 길이 존재하는 것이다. 단 화살표 방향을 거슬러 돌아갈 수는 없다. [제약 사항] 출발점은 0, 도착점은 99으로 표현된다. 정점(분기점)의

2023년 5월 3일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-1970-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 해당 문제는 거스름돈을 계산하는 문제입니다. 입력으로 주어지는 거슬러 주어야 할 금액 N에 대해 각 돈의 종류마다 필요한 개수를 계산하여 출력해야 합니다. ChatGPT 문제풀이와의 비교 > ChatGPT code: 스트 케이스의 개수 T와 각 테스트 케이스마다 거슬러 주어야 할 금액 N을 입력 받는 부분은 입력의 크기에 비례하여 O(1)의 시간이 소요됩니다. 거스름돈을 계산하는 부분에서는 돈의 종류에 대해 반복문을 돌며 필요한 개수를 계산하고, 거스름돈을 갱신합니다. 돈의 종류는 고정되어 있으므로 이 부분의 시간 복잡도는 상수입니다. 따라서 O(1)의 시간이 소요됩니다. 마지막으로, 계산된 돈의 개수를 출력하는 부분

2023년 5월 3일
·
0개의 댓글
·
post-thumbnail

SW Expert Academy-1959-Python

코드 결과 ChatGPT Code ChatGPT 문제풀이 > 해당 문제는 두 개의 숫자열에서 숫자들을 서로 마주보는 위치를 변경하여 곱한 뒤 최댓값을 구하는 문제입니다. 이를 해결하기 위해 다음과 같은 접근 방법을 사용할 수 있습니다: 주어진 숫자열 Ai와 Bj를 각각 리스트로 저장합니다. 더 긴 숫자열의 길이를 변수 max_length에 저장합니다. 최댓값을 저장할 변수 max_value를 0으로 초기화합니다. i를 0부터 max_length - N까지 반복하면서 다음을 수행합니다: >5. j를 0부터 max_length - M까지 반복하면서 다음을 수행합니다: 현재 i와 j값을 기준으로 Ai와 Bj를 곱한 결과를 저장할 변수 total을 0으로 초기화합니다. k를 0부터 N-1까지

2023년 5월 2일
·
0개의 댓글
·

[SW Expert Academy] 9611 명진이와 동휘의 숫자 맞추기[D3]

문제 명진이와 동휘가 숫자 맞추기 게임을 한다. 게임 방법은 명진이가 0 에서 9 사이의 숫자를 하나 생각하면, 동휘가 질문을 통해 명진이가 생각한 숫자가 어떤 것인지 맞추는 것이다. 동휘는 명진이가 생각한 숫자를 맞추는 데 총 N번의 질문 했다. 동휘는 질문을 한 번 할 때, 네 개의 숫자 중에 명진이가 생각한 숫자가 있는지 물어볼 수 있다. 명진이는 이 네 숫자 중에서 자신이 생각하는 숫자가 있으면 YES를, 아니면 NO를 답해 준다. 명진이가 생각한 숫자가 어떤 숫자인지 구하는 프로그램을 작성하라. 입력 첫 번째 줄에 테스트 케이스의 수 TC가 주어진다. 이후 TC개의 테스트 케이스가 새 줄로 구분되어 주어진다. 각 테스트 케이스는 다음과 같이 구성되어 있다. > 각 테스트 케이스의 첫 번째 줄에 동휘가 숫자를 맞추는 데까지 질문한 횟수 N 이 주어진다. (1 ≤ N ≤ 6) > 이후 N개의 줄의 각 줄에는 네 개의 정수 a, b, c, d 와 하

2023년 5월 2일
·
0개의 댓글
·
post-thumbnail

4698. 테네스의 특별한 소수

4698. 테네스의 특별한 소수 문제 요약 테네스는 소수를 좋아한다. 소수란 1과 자기 자신만으로 나뉘어 떨어지는 숫자로 작은 것부터 나열하면 2, 3, 5, 7, 11, 13, 17, 19, 23, …같은 수들이 있다. 또한 테네스는 D를 포함하는 숫자도 좋아한다. 그렇기에 소수가 D를 포함하면 더욱 더 좋아하여 특별한 소수라고 부르기로 했다. 예를 들어 D = 3이면 3, 13, 23, … 같은 소수들이 3을 포함하였으므로 테네스는 이런 숫자들을 특별한 소수라고 부를 것이다. D가 주어질 때, A이상 B이하의 수 중에서 특별한 소수인 것들의 개수를 구하는 프로그램을 작성하라. 문제 풀이(처음 푼 답) 에라토스테네스의 체를 이용하여 0~ 1000000까지 소수여부를 배열에 저장한다. 그 후 d가 포함 해당 숫자에 포함되어 있고 해당 숫자가 소수인지 판별한다. 이것을 코드로 나타내면 다음과 같다. 하지만 최적화를 할 수가 있다. 처음 풀었을 때

2023년 5월 1일
·
0개의 댓글
·