[코드테스트] 이상한 문자 만들기

이강민·2021년 11월 29일
0

[코드테스트]Javascript

목록 보기
37/39
post-thumbnail

이상한 문자 만들기

문제설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

s return
"try hello world" "TrY HeLlO WoRlD

나의 풀이

20656

function solution(s) {
//문자열을 쉽게 관리하기 위해 배열로 만들었다, split하여 공백을 기준으로 만들고 이를 다시 map하여 각각 배열을 2차원 배열로 만들어 따로 관리하기 위해 만들었다.
	let arr = s.split(" ").map((v) => v.split(""))
//arr의 형태를 보기위한 출력
	console.log(arr)
//arr의 길이는 인덱스 value가 3개가 담긴 형태(문제마다 다름)
	for(let i = 0; i < arr.length; i++){
//1차원의 배열, 즉 2차원까지 접근하기위해 for문의 for문으로 만들었으며 각각 index마다의 길이 만큼 반복하였다.
		for(let j = 0; j < arr[i].length; j +=2){
//짝수 인덱스를 대문자로 만들기 위한 코드
			arr[i][j] = arr[i][j].toUpperCase();
		}
//홀수 인덱스에 접근하여 해당 value를 소문자로 만들었다.
		for(let j = 1; j <arr[i].length; j +=2){
			arr[i][j] = arr[i][j].toLowerCase();
		}
//1차원 배열로 만들기 위해 join하였다
		arr[i] = arr[i].join("")
	}
//배열의 값을 문자열로 바꾸기 위해 다시 join을 사용하였고 콤마를 만들어 합쳤다.
	let string = arr.join(",")
//이 문자열을 다시 콤마를 찾아 공백으로 만들어 합쳤다.(하다보니 알게된 사실인데 바로 공백을 기준으로 만들면 된다 ㅎ)
	string = string.replace(/\,/g," ")
//문자열을 확인하기 위한 값
	console.log(string)
// 결과를 리턴 
	return string;
}

다른 사람 풀이

function toWeirdCase(s){
//모든 문자열을 바로 대문자로 만들고 이 문자열을 replace하는데 문자열 2개씩 선택하여 중 앞은 대문자, 뒤는 소문자로 바꾼다. 
  return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})

}
profile
AllTimeDevelop

0개의 댓글

관련 채용 정보