백준 1076 저항
본문 바로가기
알고리즘 최종 (단계별)/0.init

백준 1076 저항

by KyeongMin 2023. 6. 11.
728x90
반응형

문제 링크

https://www.acmicpc.net/problem/1076

문제 풀이 소스 코드

#include<iostream>
#include<stdio.h>
#include<map>
#include<string>
using namespace std;
int main(void) {
  //map<string,int> res;
  //res["black"] = 1;
  //res["brown"] = 10;
  //res["red"] = 100;
  //res["orange"] = 1000;
  //res["yellow"] = 10000;
  //res["green"] = 100000;
  //res["blue"] = 1000000;
  //res["violet"] = 10000000;
  //res["grey"] = 100000000;
  //res["white"] = 1000000000;
  map<string, int> res = {
  {"black",0},
  {"brown",1},
  {"red",2},
  {"orange",3},
  {"yellow",4},
  {"green",5},
  {"blue",6},
  {"violet",7},
  {"grey",8},
  {"white",9},
  };
​
  string s1, s2, s3;
  long long ret=0;
  int tenNumber = 10;
  cin >> s1 >> s2 >> s3;
​
  ret = res[s1] * 10 + res[s2];
​
  int tenRet = 0;
  for (int index = 0; index < res[s3]; index++) {
    ret *= 10;
  } 
  cout << ret << endl;
  return 0;
}

풀이하는 법

  • 각 색상 마다 숫자가 있음
  • 색상의 숫자를 map자료구조로 담는다.
  • map<string, int>res;

    res["red"]=1;

    위와 같은 경우라면,

    int number = res["res"];

    number가 1이되는 것을 이용한다.
  • 1, 2번 문자열의 경우
    • 위와 같이 계산을 해주고
  • //1번 문자열 s1
    //2번 문자열 s2

    res[s1]*10 + res[s2];
  • 3번 문자열의 경우 나머지 10을 각 번호에 맞게 1번 ~9번을 곱해주면된다.
  • for (int index = 0; index < res[s3]; index++) {
    ret *= 10;
    }
  • 풀이는 엄청 쉽다. map 함수를 안다면 더 쉽게 구현할 수 있음

알고 가기

  • map 생성
  • //1
    map<string,int> res;
    res["black"] = 0;
    res["brown"] = 1;
    res["red"] = 2;
    res["orange"] = 3;
    res["yellow"] = 4;
    res["green"] = 5;
    res["blue"] = 6;
    res["violet"] = 7;
    res["grey"] = 8;
    res["white"] = 9;

    //2
    map<string, int> res = {
    {"black",0},
    {"brown",1},
    {"red",2},
    {"orange",3},
    {"yellow",4},
    {"green",5},
    {"blue",6},
    {"violet",7},
    {"grey",8},
    {"white",9},
    };
  • 두가지 방법으로 대입할 수 있음
728x90
반응형

'알고리즘 최종 (단계별) > 0.init' 카테고리의 다른 글

9935_문자열폭발  (0) 2023.06.20
1236_성지키기  (0) 2023.06.16
1181_단어정렬  (0) 2023.06.12

댓글