본문 바로가기
  • Adillete
【스터디노트】/▷TIL

코테 스터디 28일차 TIL + 오늘의 학습 키워드 hashtable

by 아딜렛 2025. 5. 12.


- 오늘의 학습 키워드 hash table
- 공부한 내용 본인의 언어로 정리하기

palindrome: 회문, 앞뒤 방향으로 볼때 같은 순서의 문자로 구성된 문자열

문자는 대소문자를 구분한다.

 

회문의 각 문자는 짝을 이룬다.

최대 하나의 문자만 홀수 개수로 사용될수 있다.

각 문자의 출현 횟수를 센다.

짝수 개수의 문자는 모두 사용하고 홀수 개수문자는 짝수부분이 있으면 사용한다.

문자들의 순서를 재배열 할 수 있다.

 

function longestPalindrome(s);
  문자별 출현 횟수를 저장할 맵 형성
  
  for each 문자 c in s:
  	맵에서 c의 출현 횟수 증가
    
   결과 길이: 0
   홀수 문자 존재여부 = false
   
   for each 문자 c의 출현 여부 count in 맵
       if count is 짝수: 
           결과 길이 += count
           
       else: //홀수 인경우
            결과 길이 +=(count-1) //짝수 부분만 사용
            홀수 문자 존재 여부 =true
            
       if 홀수 문자 존재 여부:
            결과 길이 +=1 // 중앙에 하나의 홀수 문자 추가
            
         return 결과 길이

 


- 오늘의 회고
  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

1.홀수개인 경우를 어떻게 처리해야할지 몰랐음.

 

 


여기에 추가적으로 의문이었던점

2.홀수개가 여러개 문자로 나타날 경우 어떤 문자가 가운데에 사용되는지?

 

 

  - 어떻게 해결했는지

 

1- A. 회문을 만들때 짝수개로 나와야 count 를 +1 처리를 할수 있는데 홀수인 경우는
-1을하면 짝수개 숫자만큼은 사용할수 있음

 

2-A  해당사항은 문제에서 요구한것이 아니고 실제 문제 요구사항은 가능한 가장 긴 회문의 길이이므로 어떤 특정 

문자를 중앙에 배치하는것에 관계없이 최종 길이만 나타내면되어서 hasOdd 변수를 통해 홀수의 개수가 

있는지를 먼저 체크하고 결과 길이+1을 하기만 하면 되었다.


  - 무엇을 새롭게 알았는지

palindrome 저번에도 풀었는데 s.tochararray를 보면서도 아무것도 떠올리지 못하는것을 보고 

복습의 중요성을 새삼 느꼈다 . 담에 나오면 꼭 다시 풀어내자
  - 내일 학습할 것은 무엇인지