240422-TIL

2024. 4. 22. 20:58내일배움캠프

4월 22일

 

오늘은 오랜만에 알고리즘 문제로 돌아왔다.

 

둘만의 암호

더보기

 

 

문제 설명은 이렇다 

 

뭔가 굉장히 복잡하지만 간단하게 설명하자면 s라는 문자열이 들어오고 s의 문자열들의 각 문자를 index만큼

 

뒤의 알파뱃으로 바꾸라고 한다 이때 조건이있는데 

 

skip에 포함되어있다면 세지 않는다고 한다.

 

문제를 보는순간 그냥 아 아스키코드를 사용해야겠네 라는 감이 오긴했다

 

 

이 아스키코드표를 활용해서 문제를 풀어보도록 하자

 

 

솔루션의 초기 상태 여기서 미리 문제를 풀기위한 변수 몇개를 만들어주자

 

문자를 하나씩 받아서 index만큼 뒤로 밀어줄꺼기 때문에 temp와 ch 를 미리 만들어두었다

 

두 변수의 활용은 반복문 안에서 이루어지는데

 

첫 반복문에선 temp에 s[i]를 대입해줄꺼다

 

이렇게 int 자료형에 문자를 넣어주게되면 자동으로 형변환이 일어나게되는데 이때 아까 위에 적어준 아스키코드표의 10진수의 값으로 변환되어 들어가게된다.

 

 

안쪽 반복문에선 index만큼 temp를 1씩 증가시켜줄껀데 이때 필요한 몇가지 조건들이 있다.

 

일단 우린 a ~ z 까지 소문자 알파뱃만 표기할것이기 떄문에 temp가 122(z)를 넘어가게되면 97(a)로 바꿔주어야한다.

 

그렇게 temp를 Convert.ToChar를 이용해 다시 문자로 바꿔주어 ch에 대입해준다.

 

그리고 skip의 Contains를 이용하여 ch가 skip에 들어있다면 j를 1감소시켜 카운트에서 제외시켜준다

 

안쪽 반복문을 빠져나와 바깥쪽의 반복문 마지막에서 ch에 마무리된 temp를 다시금 넣어주고 answer에 집어넣어주면 문제는 끝이난다 정답이 맞는지 확인해보자

 

정답!!

이번 문제는 사고의 흐름대로 하나씩 하나씩 풀어나가니 손쉽게 풀린거같다.

 

4월 22일 TIL은 여기서 마치도록하겠다.

'내일배움캠프' 카테고리의 다른 글

240424-TIL  (0) 2024.04.24
240423-TIL  (0) 2024.04.23
240419-TIL  (0) 2024.04.19
240417-TIL  (0) 2024.04.17
240416-TIL  (0) 2024.04.16