티스토리 뷰
오늘은 알고리즘 특강을 들었다. 저녁이라 너무 피곤해서 특강을 잘 들을 수 있을까 걱정이 무색할 정도로 특강 내용이 좋았고 재미있게 잘 들었다. 내가 가고 싶은 서비스 회사들이 라이브 코테를 진행하는 게 트렌드인 것도 있고, 알고리즘 문제 자체도 푸는 게 재미있어 보여서 알고리즘 문제를 잘 풀어내보고 싶다는 생각이 든다.
강의를 진행하신 튜터님이 숙제를 내 주셨다. 프로그래머스의 수박수박수박수박수박수? 라는 문제다.
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
풀이 과정
아니 강의에서는 가위바위보 했으면서 문제 뚜껑 열어보니까 진짜 너무 어렵다.
일단 풀이의 아이디어는
-길이가 n에서 1씩 늘어남
-길이만큼 문자의 패턴이 늘어남
-홀수일 때 "수", 짝수일 때 "박"을 리턴함
-n은 0 이상, 10000 이하인 수
정도였다. 내가 가지고 있는 알량한 지식으로 나름대로!! 문제를 풀어보자면..
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
<!
char* solution(int n) {
for (let i=0, i<10,000, i++) {
if (n<=10,000 && n>0) {
if (0 === n%2){
return "박"
} else if (0 !== n%2) {
return "수"
}
}
}
}
// 리턴할 값은 메모리를 동적 할당해주세요.
char* answer = (char*)malloc(...);
return answer;
}
..이렇게 나왔다. 그리고 도저히 모르겠어서 지피티한테 물어봤다.

지피티가 얘기하는 방향 중 내가 만들 수 있는 것은.. 없다!
1. 문자열 길이를 계산하는 방법? length가 떠오르긴 하는데 그게 끝이다.
2. "수박"패턴을 기반으로 문자열을 생성하는 방법? 그게뭐지?
3. 동적으로 할당..? 메모리에 복사...??
결국 그냥 짜여진 코드를 공부하기로 했다...
챗지피티가 짜준 코드.
function solution(n) {
// "수박" 패턴을 저장할 빈 문자열 생성
let answer = '';
// n 길이만큼 반복하여 "수박" 패턴 생성
for (let i = 0; i < n; i++) {
if (i % 2 === 0) {
answer += '수'; // 짝수 인덱스에는 '수' 추가
} else {
answer += '박'; // 홀수 인덱스에는 '박' 추가
}
}
return answer; // 생성된 문자열 반환
}
// 예시로 n = 5인 경우 호출
console.log(solution(5)); // "수박수박수"
반복문을 사용하여 패턴을 생성하는 게 흥미로웠는데, 'for'루프가 '0'부터 'n-1'까지 반복되고 'i'가 짝수면 "수"를 'answer'에 추가하고, 'i'가 홀수면 "박"을 'answer'에 추가했다. answer 함수를 빈 함수로 정의하고 answer += '수'와 같은 구문을 이용하는 게 흥미로웠다.
for문을 사용하겠다는 판단이 틀리지 않았다..! 함수에 글자를 추가하는 방법을 명시하면서 복습하기로.
정답
function solution(n) {
// "수박" 패턴을 저장할 빈 문자열 생성
let answer = '';
// n 길이만큼 반복하여 "수박" 패턴 생성
for (let i = 0; i < n; i++) {
if (i % 2 === 0) {
answer += '수'; // 짝수 인덱스에는 '수' 추가
} else {
answer += '박'; // 홀수 인덱스에는 '박' 추가
}
}
return answer; // 생성된 문자열 반환
}
// 예시로 n = 5인 경우 호출
console.log(solution(5)); // "수박수박수"
console.log(solution(6)); // "수박수박수박"
'스파르타 > 알고리즘 코드카타' 카테고리의 다른 글
코딩 테스트 - 평균 구하기 (0) | 2024.08.08 |
---|---|
코딩 테스트 - 가운데 글자 가져오기 (0) | 2024.08.02 |
코딩 테스트 - 짝수와 홀수 (0) | 2024.07.11 |
코딩 테스트 - 배열의 평균값 (0) | 2024.07.10 |
코딩 테스트-짝수의 합 (1) | 2024.07.10 |