일상적 이야기들.

codewar: Errors: histogram 본문

프로그래밍/알고리즘 문제풀이

codewar: Errors: histogram

noveljava 2019. 6. 21. 11:03

문제

 - https://www.codewars.com/kata/errors-histogram/

 

Codewars: Train your coding skills

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

문제 풀이

 - 주어진 String에서 예외 문자의 개수를 count하는 문제입니다.

  -  given a string will output the errors as a string representing a histogram of the encountered errors.

 

 - 그렇기에 문자를 순회하면서, Error의 개수를 Count하고, Format에 맞게끔 출력을 시켜주면 됩니다.

 - 출력의 양식은 다음과 같습니다.

 - "%-3c%-6d[*로 갯수 표현]\r"

  - %-3c를 통해서, 에러의 문자를 포함하여 2개의 공백을 유지합니다.

  - %-6d를 통해서, 에러의 갯수와 함께 고정된 공백을 유지합니다. ( 숫자가 1자리라면 공백 5, 2자리라면 공백 4 )

  - 그리고, 나머지는 * 로 채워주게 됩니다.

 

 - 위의 방법이 아니라, 저는 For문으로 Format 양식을 맞춰두었습니다.

class Hist {
    public static String hist(String s) {
      String result = "";
		
  		int hitsArray[] = {0, 0, 0, 0};
  		
  		for(char c : s.toCharArray()) {
  			switch(c) {
  				case 'u':
  					hitsArray[0]++; break;
  				case 'w':
  					hitsArray[1]++; break;
  				case 'x':
  					hitsArray[2]++; break; 
  				case 'z':
  					hitsArray[3]++; break;
  				default:
  					 break;
  			}
  		}
  		
  		for(int i=0; i<4; i++)
  		{
  			String rowInfo = "";
  			
  			if( 0 == hitsArray[i]) {
  				continue;
  			}
  			
  			switch(i) {
  				case 0:
  					rowInfo += "u  "; break;
  				case 1:
  					rowInfo += "w  "; break;
  				case 2:
  					rowInfo += "x  "; break;
  				case 3:
  					rowInfo += "z  "; break;
  				default:
  					 break;
  			}
  			
  			rowInfo = rowInfo + Integer.toString(hitsArray[i]);
  			for(int j=0; j<6-(Integer.toString(hitsArray[i]).length()); j++)
  			{
  				rowInfo += " ";
  			}
  			
  			for(int j=0; j<hitsArray[i]; j++)
  			{
  				rowInfo += "*";
  			}
  			
  			rowInfo += "\r";
  			result += rowInfo;
  		}
  		
  		if ("" != result)
  		{ 
  			result = result.substring(0, result.length()-1);
  		}
      
      return result;
    }
}

 

'프로그래밍 > 알고리즘 문제풀이' 카테고리의 다른 글

codewar: Fun with lists:indexOf  (0) 2019.06.25
codewar: int32 to IPv4  (0) 2019.06.21
codewar: Scalling Squared Strings.  (0) 2019.06.18
codewar: RemoveString Spaces  (0) 2019.06.18
codewar: Alphabet war  (0) 2019.06.12
Comments