TIL 23.10.17

전민석·2023년 10월 17일
0

TIL

목록 보기
9/52

어제 한달전에 다친 발목이 낫질않아 병원을 다녀왔다.
뼛조각 때문에 수술을 할 수도 있다고 하더라.
예상못한 소리에 멘탈 나가서 하루를 그냥 버린것 같다.
덕분에 TIL 쓸게 없더라.
오늘부터 다시 파이팅!

코딩테스트

문제1

문자열s 내의 p와 y의 개수를 비교하여 개수가 같으면 true 다르면 false를 리턴하라.
조건1. 대문자와 소문자 구별은 없다.
조건2. 문자열 s의 길이는 50이하의 자연수
조건3. 문자열s는 알파벳으로만 이루어짐
제시된 문자열 "pPoooyY" "Pyy"

내가 생각한 방법

p와 y를 대문자로 바꾸고 split를 통해 문자열을 자름
그 후 둘의 길이를 비교하여 값을 구함

function solution(s) {
    s = s.toUpperCase()
    findP = s.split('P')
    findY = s.split('Y')

    if (findP.length === findY.length) {
        return true
    } else {
        return false
    }
}

간단한 문제라 정답

다른 정답을 보며 알게된 부분

unction numPY(s){
  return s.match(/p/ig).length == s.match(/y/ig).length
}

.match(/p/ig)

  • 모르고 쓰면 find 와 비슷한거 같은데 '정규표현식'이라는 개념이 있음.
  • /p : 패턴, 여기서는 찾는 문자열
  • /ig : 플래그, i=대소문자 구분없이 g=패턴과 일치하는 모든 것들을 반환

정규표현식(정규식) : 문자열에서 특정 문자 조합을 찾기 위한 패턴.

RegExp : 패턴을 사용해 텍스트를 판별할 때 사용

리터럴표기법 : 따옴표를 사용하지 않고 빗금으로 감쌈.

new RegExp(/ab+c/, "i"); // 리터럴
new RegExp("ab+c", "i"); // 생성자

문제2

정수의 절댓값을 답은 배열 absolutes 불리언 배열인 signs 두 배열을 이용하여 배열 내 정수들의 합 구하기.
조건1. absolutes와 signs의 배열의 길이는 같음.
조건2. signs[i]의 값이 참이면 absolutes[i]는 양수 그렇지 않으면 음수.

내가 생각한 방법

for문을 통해 absolutes의 i값을 차례대로 순회하며 if문으로 signs의불리언값에 따라 absolutes가 음수 양수인지를 정하고 전체 더하기.

let absolutes = [4, 7, 12]
let signs = [true, false, true]

function solution(a){

    for (i=0; i<a.length; i++){
        if (signs[i] !== true){
            console.log(a[i] * -1)
        }else{
          console.log(a[i])
        }
    }

}
solution(absolutes)

i값을 음수 양수로 하는건 성공했지만 변경된 값을 담지를 못해서 더하질 못함
그래서 답안을 참고하여 answer을 사용하고 더하기 등호연산자와 빼기등호연산자를 사용.

    function solution(absolutes, signs) {
    let answer = 0;
    for (i = 0; i < absolutes.length; i++) {
        if (signs[i] === false) {
            answer -= absolutes[i]
           } else {
            answer += absolutes[i]
           }
      }
      return answer
    }

배운점

변수를 담을 그릇을 만들어두는게 중요하다!

0개의 댓글