- 프로그래머스
- 도메인 모델
- 구조
- 로렝 입숨?
쉽고 간단한 문제같다.
쉽지않음...
순간 객체분해구조할당해야하나 생각했지만, 그건 아닌것같았다.
좀 더 생각해서, input[i] 가 아니라 input[0][i]로 해보니 무난하게 통과되었다.
이런 장난이야말로 진짜로 실력이 향상되는 지름길이 아닐까싶다.
단순히 스트링으로 주어진다.
for문으로 만들어보자
잘된다.
따로 for문과 if문을 만들면 쓸데없이 낭비니까, 만들어둔 for문에 추가하자
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Varius quam quisque id diam vel quam. Id neque aliquam vestibulum morbi blandit cursus risus at ultrices. Et ligula ullamcorper malesuada proin. Vitae proin sagittis nisl rhoncus mattis rhoncus urna. Purus sit amet luctus venenatis lectus magna. Nulla facilisi cras fermentum odio eu feugiat. Quam nulla porttitor massa id neque aliquam vestibulum morbi blandit. Quam quisque id diam vel quam elementum. Massa ultricies mi quis hendrerit dolor magna eget. Et pharetra pharetra massa massa ultricies mi. Mattis aliquam faucibus purus in massa tempor. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum. Scelerisque felis imperdiet proin fermentum leo vel. Arcu ac tortor dignissim convallis aenean et tortor at risus. Augue ut lectus arcu bibendum at varius vel pharetra. Tempus iaculis urna id volutpat lacus laoreet non curabitur. Egestas maecenas pharetra convallis posuere morbi leo urna. Sit amet volutpat consequat mauris nunc congue nisi vitae. Adipiscing at in tellus integer feugiat.";
var baseTime = Date.now();
var result = null;
for (let i = 0; i < 10000; i ++){
solution(text)
console.log(i)
}
console.log(Date.now()-baseTime)
위의 방법으로 실행시간을 3회 재서 평균을 내보겠다.
// 나의 코드
function solution(rny_string) {
var answer = '';
let my_string = new Array();
let n = 0
for (let i = 0 ; i < rny_string.length ; i++, n++){
if (rny_string[i] === 'm'){
my_string[n] = 'r';
my_string[n+1] = 'n';
n++
} else {
my_string[n] = rny_string[i];
}
}
answer = my_string.join('');
return answer;
}
1391, 1468, 1429= 1429.333333
처음에는 i로만 했는데 m을 r n 으로 바꾼뒤 n 에 덮어씌우거나 m 다음의 글자가 무시되는 문제가 발생했다.
그래서 i 와 n 두 가지를 모두 사용하였다.
이번에는 전체길이보다 짧게 돌거나, 첫 번째 'm'만 제대로 처리하는 등의 문제가 발생하여서, 조금 더 생각하고 고쳐서 성공하였다.
다른 사람의 풀이
// 내 방법과 비슷하지만 배열이 아니라 문자열에 넣는다.
function solution(rny_string) {
let arr = rny_string.split("");
let str = "";
for(let i = 0; i<arr.length; i++){
if(arr[i] === "m"){
str += "rn";
}else{
str += arr[i];
}
}
return str;
}
1348, 1202, 1421= 1323.666667
function solution(r) {
var answer = '';
r.split("").map((a)=>{if(a=="m"){answer += "rn"}else{answer += a}})
return answer;
}
1274, 1415, 1449= 1379.333333
// 정규식 활용
function solution(rny_string) {
return rny_string.replaceAll(/m/g, "rn");
}
1138, 1224, 1146= 1169.333333
// 문자열 활용
function solution(rny_string) {
return rny_string.replaceAll("m","rn")
}
1205, 1317, 1288= 1270
1169 > 1270 > 1323 > 1379 > 1429
정규식 교체 > 문자열 교체 > 문자열 넣기 > 삼항 > 배열 넣기
유용한 특성을 포함하는 프로세스나 현상의 map
자신의 비즈니스에 대해 마음속에 가지고 있는 지도와 같은 것.
사업에 대한 이해도도 개발능력이다.
엔티티 Entity
실제 DB 테이블과 연관되어있는 핵심 클래스
컨트롤러 Controller
하나 이상의 클라이언트의 요청을 수신, 처리하고 응답을 반환하는 것
서비스에서 데이터를 가져온뒤 정렬등은 하지 않고, 컨트롤러로 넘기는 것이 좋다.
(프론트용) .js 파일을 별도로 하나 더 만들어야 할 것 같다.
왜냐하면 자바스크립트만 담고 있는 파일이 있는 것이 개발하기 더 수월하다고 알고 있기 때문이다.
브라우저에서 웹 페이지의 url에 요청을 하면, html파일을 가져오고 헤더에서 로 연결한 파일들도 같이 가져온다.
즉, 브라우저에 전달되어 실행 될 코드와 서버에서 돌아갈 코드를 구분해야한다.
표지 디자인을 위해서 실제로 존재하는 단어와 비슷하지만 같지 않게 만든 글자들이다.
.join
repalceAll()
크롬 개발자 콘솔 타임 스탬프 표시
로렝 입슘 lorem ipsum (랜덤 문자열) 생성
로렝 입숨의 예시